DateTime.ParseExact FormatException

发布于 2024-12-28 21:58:17 字数 252 浏览 0 评论 0原文

为什么以下代码会生成 FormatException?

DateTime.ParseExact("03/01/2012", "dd/MM/yyyy", null);

DateTime.ParseExact

也许这与以下事实有关:代码作为 IIS 7.5 Express 的一部分运行MVC3站点执行逻辑?

Why does the following code generate a FormatException?

DateTime.ParseExact("03/01/2012", "dd/MM/yyyy", null);

DateTime.ParseExact

Perhaps it has something to do with the fact that the code is running under IIS 7.5 Express as a part of an MVC3 site execution logic?

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

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

发布评论

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

评论(3

Spring初心 2025-01-04 21:58:17

您需要包含 CultureInfo,例如:

DateTime.ParseExact("03/01/2012", "dd/MM/yyyy", new CultureInfo("en-US"));

格式字符串中的斜杠是区域性敏感的,如果您不传入 CultureInfo,则使用当前区域性。您还可以使用CultureInfo.InvariantCulture,它会起作用。 Jon Skeet 在此提供了一些详细的解释。

You need to include CultureInfo, for example:

DateTime.ParseExact("03/01/2012", "dd/MM/yyyy", new CultureInfo("en-US"));

Slashes in format string are culture sensitive and if you don't pass in CultureInfo, current culture is used. You can also use CultureInfo.InvariantCulture and it will work. Jon Skeet provides some detailed explanation here.

空袭的梦i 2025-01-04 21:58:17

取决于你的文化,将其排除在外......

DateTime.ParseExact("03/01/2012", "dd/MM/yyyy", CultureInfo.InvariantCulture);

depends on your culture, to take that out of the equation....

DateTime.ParseExact("03/01/2012", "dd/MM/yyyy", CultureInfo.InvariantCulture);
再可℃爱ぅ一点好了 2025-01-04 21:58:17

根据文档FormatException是抛出,给定以下条件之一:

public static DateTime ParseExact(
    string s,
    string format,
    IFormatProvider provider
) 
  • s 或 format 是空字符串。
  • s 不包含与 format 中指定的模式相对应的日期和时间。
  • s 中的小时部分和 AM/PM 指示符不一致。

如果您传入 null IFormatProvider,我认为它默认为当前线程的区域性。我必须在 Reflector 中看看这个。您有什么理由想传入 null 吗?

更新:

我在.NET Reflector中查看了它,它默认为当前线程的DateTimeFormatInfo。我不知道我是否可以在这里发布代码。

According to the documentation, a FormatException is thrown, given one of these conditions:

public static DateTime ParseExact(
    string s,
    string format,
    IFormatProvider provider
) 
  • s or format is an empty string.
  • s does not contain a date and time that corresponds to the pattern specified in format.
  • The hour component and the AM/PM designator in s do not agree.

If you pass in a null IFormatProvider, I think it defaults to the current thread's culture. I'd have to look at this in Reflector. Is there any reason you wanted to pass in null?

UPDATE:

I looked at it in .NET Reflector and it defaults to the current thread's DateTimeFormatInfo. I don't know if I'm allowed to post the code here.

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