Почему DateTime.TryParse возвращает false при задании строки реального года?

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

  •  06-07-2019
  •  | 
  •  

Вопрос

В приведенном ниже коде я присваиваю функции sTransactionDate="1999" и пытаюсь скрыть ее до даты x / x / 1999.

DateTime dTransactionDate = new DateTime();
if(DateTime.TryParse(sTransactionDate, out dTransactionDate))
{ //Happy 
}else
{ //Sad 
}

если строка "1999", то она всегда будет заканчиваться на sad.Есть какие-нибудь идеи?

Это было полезно?

Решение

Попробуйте что-то вроде этого (соответствующим образом настройте CultureInfo и DateTimeStyles ):

DateTime.TryParseExact
  ("1999",
   "yyyy",
   CultureInfo.InvariantCulture,
   DateTimeStyles.None,
   out dTransactionDate)

Другие советы

Как насчет ...

DateTime dTransactionDate = new DateTime();
if (DateTime.TryParseExact(sTransactionDate, "yyyy",
    CultureInfo.InvariantCulture, DateTimeStyles.None, out dTransactionDate))
{
    // Happy
}
else
{
    // Sad
}

... или даже просто ...

DateTime dTransactionDate = new DateTime(int.Parse(sTransactionDate), 1, 1);
// Happy

"1999" - это не дата, это год попробуйте 1/1/1999

Также проверьте в системном календаре, что дата, которую вы пытаетесь проанализировать, существовала. Точно так же, как вы найдете "2/29/1949" также вернет false, потому что его никогда не было в календаре.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top