为什么DateTime.TryParse在给出实际年份字符串时返回false?

时间:2009-06-18 16:16:51

标签: c# .net datetime tryparse

在下面的代码中,我给函数一个sTransactionDate =“1999”,我试图将它转换为日期x / x / 1999。

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

如果字符串是“1999”,它总是会悲伤。有什么想法吗?

4 个答案:

答案 0 :(得分:14)

尝试这样的事情(适当调整CultureInfoDateTimeStyles):

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

答案 1 :(得分: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 :(得分:2)

“1999”不是约会,而是一年 试试1/1/1999

答案 3 :(得分:0)

还要在系统日历上验证您尝试解析的日期是否存在。就像你会发现" 2/29/1949"也将返回false,因为它从未存在于日历上。