Por DateTime.TryParse retornar false quando é dada uma seqüência de ano real?
Pergunta
No código abaixo eu estou dando a função de um sTransactionDate = "1999" e eu estou tentando convertê-lo para uma data x / x / 1999.
DateTime dTransactionDate = new DateTime();
if(DateTime.TryParse(sTransactionDate, out dTransactionDate))
{ //Happy
}else
{ //Sad
}
Se a string é "1999" será sempre acabam em triste. Alguma idéia?
Solução
Tente algo parecido com isto (ajustar o CultureInfo
e DateTimeStyles
apropriadamente):
DateTime.TryParseExact
("1999",
"yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out dTransactionDate)
Outras dicas
Que tal ...
DateTime dTransactionDate = new DateTime();
if (DateTime.TryParseExact(sTransactionDate, "yyyy",
CultureInfo.InvariantCulture, DateTimeStyles.None, out dTransactionDate))
{
// Happy
}
else
{
// Sad
}
... ou mesmo apenas ...
DateTime dTransactionDate = new DateTime(int.Parse(sTransactionDate), 1, 1);
// Happy
"1999" não é uma data, é um ano tente 1/1/1999
Além disso, verifique em um calendário sistema que a data que você está tentando parse existiu. Assim como você vai encontrar "1949/02/29" também vai retornar falso porque nunca existiu no calendário.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow