不同平台上的DateTime问题(.NET 2.0)

Sam*_*eet 1 datetime datetime-format .net-2.0

在具有Intel处理器的32位操作系统上,DateTime例如2/17/2009 12:00:00 AM请注意:mm/DD // yyyy

在具有AMD处理器的64位操作系统上,DateTime例如17-02-2009 00:00:00

现在,当我尝试解析第一种格式时,它会在第二个平台上引发错误.这意味着 - DateTime.Parse("2/17/2009 12:00:00 AM") - 抛出错误 - 无法转换.而在同一平台上,DateTime.Parse("17/2/2009 12:00:00 AM")有效!这意味着DD/MM很好,MM/DD不是.

是什么造成的?64位操作系统?处理器?

我该如何摆脱这个问题?

Jon*_*eet 5

DateTimes本身没有格式.您解析它们或将它们格式化为字符串.(它就像数字 - 整数不是以十六进制或十进制存储,它们只是整数.你可以用十六进制或十进制格式化它们,但值本身只是一个数字.)

格式将取决于操作系统的文化(或更准确地说,线程的文化,通常与操作系统相同).

我个人喜欢显式设置我用于解析或格式化的格式,除非我实际上向用户显示字符串并且知道文化已经适当.