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

时间:2009-06-26 18:56:45

标签: datetime .net-2.0 datetime-format

在32位操作系统上,使用英特尔处理器, DateTime例如2/17/2009 12:00:00 AM 请注意它是:mm / DD // yyyy

在64位操作系统上,使用AMD处理器, 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位操作系统?处理器?

如何解决问题?

2 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:2)

在“地区和语言”控制面板中查看“日期和时间格式”。

此外,如果您希望DateTime生成特定格式,请不要只调用plain ToString(),而是传递一个指示所需格式的参数。同样,如果您知道要求它解析的日期的格式,请调用TryParseExact(),并告诉它您提供的格式。

另请参阅MSDN的Standard Date and Time Format Strings