DateTime.ParseExact() 不了解 24 小时时间值?

Posted

技术标签:

【中文标题】DateTime.ParseExact() 不了解 24 小时时间值?【英文标题】:DateTime.ParseExact() does not grok 24-hour time values? 【发布时间】:2012-06-29 05:59:31 【问题描述】:

这行代码:

DateTime dt = DateTime.ParseExact(time, "hh:mm", CultureInfo.InvariantCulture);

解析“12:45”的“时间”值就好了,但会抛出“13:00”的异常

我应该使用其他 CultureInfo 值,还是需要在大于 12 的小时值上附加一个“pm”,或者...?

错误消息是:System.FormatException 未处理 Message=String 未被识别为有效的 DateTime。

【问题讨论】:

使用 "HH:mm" 解析 24 小时格式。 +1 用于在 SO 问题中使用术语“grok” 【参考方案1】:

“hh”是 12 小时制格式(01 到 12)。您需要使用“HH”来表示 24 小时制。

DateTime dt = DateTime.ParseExact(time, "HH:mm", CultureInfo.InvariantCulture);

【讨论】:

【参考方案2】:

试试这个:

DateTime dt = DateTime.ParseExact(time, "u", CultureInfo.InvariantCulture);

"u" 表示通用可排序格式。

【讨论】:

【参考方案3】:

虽然 Hans 已经在评论部分回答了您的问题,但 Here 是一个 MSDN 链接,描述了与 DateTime.ParseExact 方法一起使用的各种日期格式。

【讨论】:

以上是关于DateTime.ParseExact() 不了解 24 小时时间值?的主要内容,如果未能解决你的问题,请参考以下文章

DateTime.ParseExact 返回错误值

泰国/佛教时代时间的 DateTime.ParseExact 问题

c# datetime.parseexact 字符串未被识别为有效的日期时间 [重复]

csharp 用法DateTime.Parse DateTime.ParseExact。今更だけど,稀に迷う时があるのでメモ。

DateTimeComparer

C# DateTime 解析不一致