【问题标题】:DateTime.TryParseExact returns false for MM/dd/yyyy hh:mmDateTime.TryParseExact 为 MM/dd/yyyy hh:mm 返回 false
【发布时间】:2017-07-29 08:29:45
【问题描述】:

以下代码为我返回false,我就是不知道我做错了什么。

var localDateTimeString = "03/24/2016 21:05"; // subject.Substring(0, 16);

DateTime localDateTime;
if (!DateTime.TryParseExact(
    localDateTimeString,
    "MM/dd/yyyy hh:mm",
    CultureInfo.InvariantCulture,
    DateTimeStyles.None,
    out localDateTime)) return false;

格式是固定的 16 字符字符串,天、月、分钟和小时总是 2 位数字。 4 位数字表示年份。

但是这段代码返回 false,我该如何解决这个问题?

【问题讨论】:

标签: c# .net parsing datetime


【解决方案1】:

短版应该是HH 而不是hh。除非单个数字小时(0 到 9)作为单个数字返回;在这种情况下,您应该使用H


来自MSDN:

  • HH:小时,使用 24 小时制,从 00 到 23。
  • hh:小时,使用从 01 到 12 的 12 小时制。
  • H:小时,使用 24 小时制,从 0 到 23。
  • h:小时,使用 1 到 12 的 12 小时制。

基本上改变你的格式:

"MM/dd/yyyy hh:mm"

收件人:

"MM/dd/yyyy HH:mm"

【讨论】:

    【解决方案2】:

    正确的格式应该是MM/dd/yyyy HH:mm

    if (!DateTime.TryParseExact(
                        localDateTimeString,
                        "MM/dd/yyyy HH:mm",
                        CultureInfo.InvariantCulture,
                        DateTimeStyles.None,
                        out localDateTime)) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-08
      • 1970-01-01
      • 1970-01-01
      • 2017-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多