2009-06-18 95 views
2

在下面的代码中,我给函数一个sTransactionDate =“1999”,我试图将它转换为日期x/x/1999。为什么DateTime.TryParse在给定实际字符串时返回false?

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

如果字符串是“1999”,它将始终以悲伤结束。有任何想法吗?

+3

剩余日期在哪里? – Zachary 2009-06-18 16:22:02

回答

14

尝试是这样的(调整CultureInfoDateTimeStyles适当地):

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

它工作。谢谢!!! – Geo 2009-06-18 19:13:12

2

“1999” 不是日期,它是一年 尝试1/1/1999

+0

谢谢,那就是我的想法! – Geo 2009-06-18 16:23:49

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 
0

还要在系统日历上验证您尝试解析的日期是否存在。就像你会发现“2/29/1949”也会返回假,因为它从来没有在日历上存在。

相关问题