DateTime TryParseExact没有解析类似的字符串?

时间:2016-08-27 10:32:11

标签: c# parsing datetime

我在使用DateTime.ParseExact(..)方法将DateTime值的字符串表示形式解析回DateTime实例时遇到问题。

出于某种原因,使用类似格式化的字符串(或者我可能是盲人),不同的值适用于值A)而不是另一个时间值b)我必须在这里遗漏一些东西..但我不能找到它:

var d1 = "14/10/2013 2:16:18 PM";
var d2 = "27/08/2016 12:20:34 PM";

var dFormat = "dd/MM/yyyy H:mm:ss tt";

DateTime dt = DateTime.MinValue; // out value for .TryParseExact(..)
var tryParseResultD1 = DateTime.TryParseExact(d1, dFormat, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AssumeUniversal, out dt);
var tryParseResultD2 = DateTime.TryParseExact(d2, dFormat, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AssumeUniversal, out dt);

tryParseResultD1.Dump(); // << returns False
tryParseResultD2.Dump(); // << returns True

..由于某种原因试图解析'd1'字符串不起作用但解析'd2'确实如此,我不知道为什么。

有谁知道或看到这里发生了什么?

2 个答案:

答案 0 :(得分:3)

您应该更改H的{​​{1}}。

h代表小时,使用12小时制1到12小时

h代表小时,使用0到23之间的24小时制

在你的情况下,你需要一个12小时的时钟,从1到12:

H

答案 1 :(得分:0)

您可以尝试以var dFormat?

格式更改H代表h

如果我正确h代表12小时记法而H代表24小时。