您需要指定您期待数据字符串的格式。日期可以以多种格式写入 - 美国(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