Почему DateTime.TryParse возвращает false при задании строки реального года?
Вопрос
В приведенном ниже коде я присваиваю функции 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, потому что его никогда не было в календаре.
Не связан с StackOverflow