【问题标题】:DateTime.ParseExact throwing exception [duplicate]DateTime.ParseExact 抛出异常 [重复]
【发布时间】:2017-02-20 12:02:41
【问题描述】:

我很确定我犯了一些非常愚蠢的错误,但这让我发疯了。

我正在尝试执行以下操作:

var dateTime = DateTime.ParseExact("08/24/2016 12:00:00 AM", "MM/dd/yyyy HH:mm:ss tt", CultureInfo.InvariantCulture);

但我不断收到以下异常:“字符串未被识别为有效的日期时间。”

我尝试过: "M/dd/yyyy HH:mm:ss tt" "MM'/'dd'/'yyyy HH:mm:ss tt" "M'/'dd'/'yyyy HH:mm:ss tt"

但到目前为止没有任何工作...任何帮助将不胜感激。

【问题讨论】:

  • 它对我有用,我得到输出 24/08/2016 12:00:00
  • 把格式字符串改成这样:"MM/dd/yyyy hh:mm:ss tt"

标签: c# datetime string-to-datetime


【解决方案1】:

HH 正在寻找 24 小时格式,但您还传递了 AM 并指定 tt - 解析器无法处理。您需要查找基于 12 小时的字符串:

var dateTime = DateTime.ParseExact("08/24/2016 12:00:00 AM", "MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);

使用hh,或删除AM/tt 部分。

【讨论】:

  • 记住这一点的一个好方法是hh 是“小时间”,HH 是“重要时间”。
  • 我知道这是件小事……谢谢!
【解决方案2】:

使用 hh 表示 12 小时格式,而不是使用 HH 表示 24 小时格式。此信息已在AM/PM 中,无法通过该方法处理两次。

var dateTime = DateTime.ParseExact("08/24/2016 12:00:00 AM", "MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);

【讨论】:

  • 我知道这是件小事……谢谢!
【解决方案3】:

您需要使用hh 而不是HH,因为HH 用于24 小时格式,并且您还指定am pm 格式

var dateTime = DateTime.ParseExact("08/24/2016 12:00:00 AM", "MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);

【讨论】:

  • 我知道这是件小事……谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-13
  • 2013-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多