DateTime.TryParseExact增加了一分钟
本文关键字:一分钟 增加 TryParseExact DateTime | 更新日期: 2023-09-27 18:24:10
我有这个转换:
DateTime dateTime;
DateTime.TryParseExact("01/02/2013", "mm/dd/yyyy", null, DateTimeStyles.None, out dateTime);
以下断言失败:
Assert.AreEqual(new DateTime(2013, 1, 2), dateTime);
因为TryParseExact在日期时间上增加了一个小时:
Expected: 2013-01-02 00:00:00.000
But was: 2013-01-02 00:01:00.000
这与夏令时有关吗?如果是,这是否意味着我不应该使用DateTimeStyles。无?
您的格式"mm/dd/yyyy"
表示分钟/天/年。您需要"MM/dd/yyyy"
(大写表示月份)。此外,通过传递null
,您实际上说:使用当前区域性的日期时间格式。您可能想要使用CultureInfo.InvariantCulture
。
DateTime.TryParseExact("01/02/2013", "MM/dd/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime);
如果当前区域性不使用/
作为日期分隔符,这也可以防止出现问题。例如,德国使用.
作为分隔符,因此格式字符串"MM/dd/yyyy"
将被评估为"MM.dd.yyyy"
阅读。
您的格式有问题,小写mm
用于表示月份的分钟数,它是大写MM
。您看到的值之间的差异是1分钟,而不是1小时。
用途:
DateTime.TryParseExact("01/02/2013", "MM/dd/yyyy", null, DateTimeStyles.None, out dateTime);