Pourquoi DateTime.TryParse renvoyant false lorsqu'une chaîne d'année réelle est donnée?

StackOverflow https://stackoverflow.com/questions/1013650

  •  06-07-2019
  •  | 
  •  

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?

Était-ce utile?

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
scroll top