1

在具有 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位操作系统?处理器?

我该如何摆脱这个问题?

4

2 回答 2

5

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

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

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

于 2009-06-26T18:58:36.050 回答
2

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

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

另请参阅 MSDN 的标准日期和时间格式字符串

于 2009-06-26T19:01:03.283 回答