Warum Rückkehr DateTime.TryParse falsch, wenn ein echtes Jahr Zeichenfolge gegeben?
Frage
In dem folgenden Code ich die Funktion ein sTransactionDate gebe = „1999“ und ich versuche, es zu einem Datum verdeckte x / x / 1999.
DateTime dTransactionDate = new DateTime();
if(DateTime.TryParse(sTransactionDate, out dTransactionDate))
{ //Happy
}else
{ //Sad
}
wenn die Zeichenfolge „1999“ wird es immer in traurig enden. Irgendwelche Ideen?
Lösung
Versuchen Sie so etwas wie dieses (stellen Sie die CultureInfo
und DateTimeStyles
angemessen):
DateTime.TryParseExact
("1999",
"yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out dTransactionDate)
Andere Tipps
Wie wäre es ...
DateTime dTransactionDate = new DateTime();
if (DateTime.TryParseExact(sTransactionDate, "yyyy",
CultureInfo.InvariantCulture, DateTimeStyles.None, out dTransactionDate))
{
// Happy
}
else
{
// Sad
}
... oder auch nur ...
DateTime dTransactionDate = new DateTime(int.Parse(sTransactionDate), 1, 1);
// Happy
„1999“ ist kein Datum, es ist ein Jahr versuchen 1.1.1999
Überprüfen Sie auch auf einem System-Kalender, das Datum, das Sie bestanden parsen versuchen. Genau wie Sie „1949.02.29“ finden, ist auch falsch gehen zurück, weil sie nie auf dem Kalender existiert hat.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow