Pourquoi DateTime.TryParse renvoyant false lorsqu'une chaîne d'année réelle est donnée?
Question
Dans le code ci-dessous, je donne à la fonction un sTransactionDate = " 1999 " et j'essaye de le convertir en une date x / x / 1999.
DateTime dTransactionDate = new DateTime();
if(DateTime.TryParse(sTransactionDate, out dTransactionDate))
{ //Happy
}else
{ //Sad
}
si la chaîne est " 1999 " ça finira toujours par être triste. Des idées?
La solution
Essayez quelque chose comme ça (ajustez le CultureInfo
et le DateTimeStyles
de manière appropriée):
DateTime.TryParseExact
("1999",
"yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out dTransactionDate)
Autres conseils
Pourquoi pas ...
DateTime dTransactionDate = new DateTime();
if (DateTime.TryParseExact(sTransactionDate, "yyyy",
CultureInfo.InvariantCulture, DateTimeStyles.None, out dTransactionDate))
{
// Happy
}
else
{
// Sad
}
... ou même simplement ...
DateTime dTransactionDate = new DateTime(int.Parse(sTransactionDate), 1, 1);
// Happy
& 1999; " n'est pas une date, c'est une année essayez le 1/1/1999
Vérifiez également sur un calendrier système que la date que vous essayez d'analyser existait déjà. Tout comme vous trouverez " 2/29/1949 " va également retourner false car il n'a jamais existé dans le calendrier.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow