DateTime.ParseExact 抛出异常

DateTime.ParseExact throwing exception

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

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

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

但我不断收到以下异常:"String was not recognized as a valid DateTime."

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

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

使用 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);

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,因为 HH 用于 24 小时格式,并且您还在格式中指定 am pm

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