DateTime.TryParseExact增加一分钟?

Otá*_*cio 4 c# datetime

我有这个转换:

DateTime dateTime;
DateTime.TryParseExact("01/02/2013", "mm/dd/yyyy", null, DateTimeStyles.None, out dateTime);
Run Code Online (Sandbox Code Playgroud)

以下断言失败:

Assert.AreEqual(new DateTime(2013, 1, 2), dateTime);
Run Code Online (Sandbox Code Playgroud)

因为TryParseExact会在datetime中添加一个小时:

Expected: 2013-01-02 00:00:00.000
But was:  2013-01-02 00:01:00.000
Run Code Online (Sandbox Code Playgroud)

这是否与夏令时有关,如果是,这是否意味着我不应该使用DateTimeStyles.None?

Tim*_*ter 9

您的格式"mm/dd/yyyy"表示分钟 /天/年.你想要"MM/dd/yyyy"(月份大写).另外,通过传递null你实际说:使用当前文化的日期时间格式.你可能想用CultureInfo.InvariantCulture.

DateTime.TryParseExact("01/02/2013", "MM/dd/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime);
Run Code Online (Sandbox Code Playgroud)

如果当前文化不用/作日期分隔符,这也可以防止出现问题.例如,德国.用作分隔符,因此格式字符串"MM/dd/yyyy"将被评估为"MM.dd.yyyy"..