我创建了一个应用程序,用户在其中输入月份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选择器替换它,但问题非常混乱
答案 0 :(得分:0)
Date.Parse
的 IFormatProvider
将使用当前用户的Culture
设置来确定要解析的格式,因此01/04/2017
将为2017-April-01
在大多数计算机上(dd/MM/yyyy
),但美国计算机上的2017-Jan-04
(MM/dd/yyyy
)。
如果您在任何地方使用相同的格式,则应使用DateTime.ParseExact
并提供明确的格式。
对于您的具体问题,字符串01-Dec
未指定年份组件,因此计算机必须推断日期,并且推断该日期的方式通常也低于Culture
设置。