2009-06-18 78 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」也會返回假,因爲它從來沒有在日曆上存在。

相關問題