Datetime 不同平台(.NET 2.0)上的日期时间问题

Datetime 不同平台(.NET 2.0)上的日期时间问题,datetime,.net-2.0,datetime-format,Datetime,.net 2.0,Datetime Format,在32位操作系统上,使用Intel处理器, 日期时间,例如2/17/2009 12:00:00 AM 请注意,它是:mm/DD//yyyy 在64位操作系统上,使用AMD处理器, 日期时间,例如17-02-2009 00:00:00 现在,当我试图解析第一种格式时,它在第二种平台上抛出一个错误。 这意味着-DateTime.Parse(“2/17/2009 12:00:00 AM”)-抛出错误-无法转换。 鉴于,在同一平台上, Parse(“17/2/2009 12:00:00 AM”)很有效!

在32位操作系统上,使用Intel处理器, 日期时间,例如2/17/2009 12:00:00 AM 请注意,它是:mm/DD//yyyy

在64位操作系统上,使用AMD处理器, 日期时间,例如17-02-2009 00:00:00

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

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


如何解决这个问题?

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

格式将取决于操作系统的区域性(或者更准确地说,线程的区域性,通常与操作系统的区域性相同)


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

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

格式将取决于操作系统的区域性(或者更准确地说,线程的区域性,通常与操作系统的区域性相同)

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

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

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

另请参见“区域和语言”控制面板中的MSDN检查您的“日期和时间格式”

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


另请参见MSDN的

我知道当您使用字符串执行此类操作时,FxCop会发出警告。DateTime也是这样吗?我知道当你用字符串做这种事情时,FxCop会警告你。DateTime也一样吗?