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

2

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

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

если строка "1999", она всегда будет печальной. Любые идеи?

  • 3
    Где остальная часть даты?
Теги:
datetime
tryparse

4 ответа

14
Лучший ответ

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

DateTime.TryParseExact
  ("1999",
   "yyyy",
   CultureInfo.InvariantCulture,
   DateTimeStyles.None,
   out dTransactionDate)
  • 0
    Это сработало. Спасибо!!!
  • 0
    Нет проблем - рад помочь!
4

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

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
2

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

  • 0
    Спасибо, я так и думал!
0

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню