2016-12-09 4 views
0

Alle von meinem Freund. Ich möchte informelle Zeichenfolge in C# in DateTime konvertieren. Hier ist mein String-Wert "01042016" .Wie kann ich konvertieren? kann ich einen anderen Schritt benötigen, um DateTime zu ändern.Wie informellen Zeichenfolgenwert zu Datum Uhrzeit in c konvertieren #

Dies ist mein Code:

string FinancialYear = "01042016-31032017"; 
string[] splitDate = FinancialYear.Split('-'); 
DateTime startDate = Convert.ToDateTime(splitDate[0].ToString(),"dd/MM/yyyy")); 
+1

Sie sollen Ändern Sie die Zeichenfolge in eines der von C# unterstützten Formate, und verwenden Sie dann die genaue Methode parse, um Probleme mit dem Format zu vermeiden. –

Antwort

0

Wenn Sie nicht sicher von dem Format die beste Wahl sind, wird mit DateTime.Parse() oder DateTime.TryParse()

Sie sind nicht 100% ig garantiert, dass das Datum korrekt analysiert werden, insbesondere in Fällen, in denen die Tag- und Monatszahlen in der falschen Reihenfolge sein könnten.

Am besten geben Sie ein erforderliches Datumsformat an, wenn Sie sicher sein können, dass das Datum korrekt analysiert wurde.

0

, wenn Sie Zeichenfolge in statischen Format ist, können Sie es konvertieren, indem sie auf gültige String-Format zurückzuverwandeln zuerst wie

string validstring = splitDate[0].ToString().Substring(4,4)+"-"+splitDate[0].ToString().Substring(2,2) +"-"+ splitDate[0].ToString().Substring(0,2); 
DateTime startDate = Convert.ToDateTime(validstring,"dd/MM/yyyy")); 
+0

Danke, dieser Code ist sehr nützlich für mich. –

+0

sollten Sie @ un-glückliche Antwort anwenden, es wird alles behandeln, was Sie brauchen – SKLTFZ

1

Dies wird eine Enumerable schaffen, in dem der Index 0 ist das erste Datum und Index 1 die zweites Datum.

string FinancialYear = "01042016-31032017"; 
var dateRange = FinancialYear.Split('-') 
    .Select(d => DateTime.ParseExact(d, "ddMMyyyy", CultureInfo.InvariantCulture); 
2

Wie wir, dass das Eingangsdatum ddMMyyyy im Format sein wird, so ist hier die beste Option zur Umwandlung der Eingabe in Datetime-Objekt sehen ist DateTime.TryParseExact der Code hierfür wird sein:

string FinancialYear = "01042016-31032017"; 
string[] splitDate = FinancialYear.Split('-'); 
DateTime startDate ; 
if(DateTime.TryParseExact(splitDate[0],"ddMMyyyy",CultureInfo.InvariantCulture,DateTimeStyles.None,out startDate)) 
{ 
    // Proceed with the startDate it will have the required date 
} 
else 
    // Show failure message  
Verwandte Themen