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?

Foi útil?

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