您需要指定您期待數據字符串的格式。日期可以以多種格式寫入 - 美國(mm/dd/yyyy)或歐洲(dd/mm/yyyy),兩位數年(yy)或四位數年(yyyy),不同分隔符(/
)與(-
)等。名單是無止境的。
您或者需要明確指出您期望的日期,或者編寫代碼以嘗試各種格式並處理不正確的輸入。
後一種方法的危險是日期可能不明確 - 「1/2/2013」是2月1日還是1月2日?
使用Date.TryParse
的過載,該過載需要IFormatProvider
並在失敗時報告錯誤。
dateString = "2008-03-01 10:00"
culture = CultureInfo.CreateSpecificCulture("fr-FR")
styles = DateTimeStyles.AdjustToUniversal Or DateTimeStyles.AssumeLocal
If DateTime.TryParse(dateString, culture, styles, dateResult)
Console.WriteLine("{0} converted to {1} {2}.", _
dateString, dateResult, dateResult.Kind)
Else
Console.WriteLine("Unable to convert {0} to a date and time.", dateString)
End If
什麼是您的示例輸入?你會得到什麼錯誤? – Steve 2013-05-12 11:10:48
你有一些你使用的數據的例子嗎?它的第五十二,所以你可能會使用美國的日期格式,並得到該問題(或反之亦然) – gordatron 2013-05-12 11:11:06
(如2013年5月13日是我們的格式錯誤 - 如果今天是12/05/2013) – gordatron 2013-05-12 11:11:35