解析dd-MMM日期时为什么DateTime.Parse()出错了?

时间:2017-12-24 20:50:27

标签: c# vb.net datetime

我创建了一个应用程序,用户在其中输入月份dd-MMM日期作为输入,并使用DateTime.Parse()方法解析此日期。它在我的电脑上工作正常。

Dim txtDate as String = combobox1.Text
Dim dtDate as DateTime =   DateTime.Parse(txtDate)

示例:

DateTime.Parse("01-Dec")

结果:

  

2017-12-01 00:00:00

但是当在其他机器上运行此应用程序时,它将返回1899年。

  

1899-12-01 00:00:00

搜索后我在这里发现了一个类似的问题:Time parsing Issue using DateTime.ParseExact()并且标记为已回答,但是这种情况没有解决方案

有谁知道导致这个问题的原因是什么?

注意:这是我正在处理的旧应用程序。我知道建议用DateTime选择器替换它,但问题非常混乱

1 个答案:

答案 0 :(得分:0)

未指定Date.Parse

IFormatProvider将使用当前用户的Culture设置来确定要解析的格式,因此01/04/2017将为2017-April-01在大多数计算机上(dd/MM/yyyy),但美国计算机上的2017-Jan-04MM/dd/yyyy)。

如果您在任何地方使用相同的格式,则应使用DateTime.ParseExact并提供明确的格式。

对于您的具体问题,字符串01-Dec未指定年份组件,因此计算机必须推断日期,并且推断该日期的方式通常也低于Culture设置。