我有这个转换:
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?
您的格式"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".读.
| 归档时间: |
|
| 查看次数: |
354 次 |
| 最近记录: |