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

发布于 2024-07-25 09:18:52 字数 406 浏览 5 评论 0原文

在配备 Intel 处理器的 32 位操作系统上, 日期时间 例如 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 位操作系统? 处理器?

我该如何摆脱这个问题?

On a 32 bit OS, with an Intel processor,
DateTime e.g. 2/17/2009 12:00:00 AM
Notice that it is: mm/DD//yyyy

On a 64 bit OS, with an AMD processor,
DateTime e.g. 17-02-2009 00:00:00

Now when I try to parse the 1st format, it throws an error on the 2nd platform.
That means - DateTime.Parse("2/17/2009 12:00:00 AM") - throws an error - cannot convert.
whereas, on the same platform,
DateTime.Parse("17/2/2009 12:00:00 AM") works! That means DD/MM is fine, MM/DD is not.

What is causing this? The 64-bit OS? The processor?

How do I get rid of the problem?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

香橙ぽ 2024-08-01 09:18:52

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

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

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

DateTimes themselves don't have formats. You parse them or format them into strings. (It's like numbers - integers aren't stored in hex or decimal, they're just integers. You can format them in hex or decimal, but the value itself is just a number.)

The format will depend on the culture of the operating system (or more accurately, the culture of the thread, which is typically the same as the operating system one).

Personally I like to explicitly set the format I use for either parsing or formatting, unless I'm actually displaying the string to the user and know that the culture is appropriate already.

草莓味的萝莉 2024-08-01 09:18:52

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

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

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

Check your "Date and time formats" in the "Region and Language" control panel.

Also, if you want DateTime to generate a specific format, don't just call plain ToString(), but pass it a parameter indicating the format you want. Similarly, if you know the format of the date you are asking it to parse, call TryParseExact(), and tell it the format you are providing.

See also MSDN's Standard Date and Time Format Strings

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文