c# - DateTime.TryParseExact 加一分钟?

标签 c# datetime

我有这个转换:

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.None?

最佳答案

您的格式 "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"Read .

关于c# - DateTime.TryParseExact 加一分钟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26020290/

相关文章:

c# - 从坏表列命名 C# 类

c# - asp.net mvc 4 [HttpPost] 不工作

c# - 静态方法中的全局变量

postgresql - 如果时间部分是可选的,如何将日期时间存储在数据库中?

SQL Server : Why are dates in ISO-8601 format language dependent?

c# - 使用 DllImport 将非托管 dll 加载到托管应用程序中

java - 如何在android中将long转换为datetime

java - 具有夏令时的 GregorianCalendar.set() 行为

sql - netezza sql 中 2 个日期之间的月份

c# - 可以过滤日期但无法过滤日期时间?