c# - 将字符串解析为 DateTime,有时会增加 1 小时(时区)

标签 c# parsing datetime timezone

当我需要将字符串解析为日期时间 时遇到问题。有时会增加一个小时,有时不会。有什么原因吗,因为我不希望它增加一个小时。

第一个示例完全符合我的需要。

string s = "2016-01-28T20:59:00.000+01:00";            
DateTime ds = DateTime.Parse(s); //gives: 28/01/2016 20:59:00

第二个例子增加了一个小时,我想知道为什么。

string ss = "2016-05-27T10:38:00.000+01:00";
DateTime dss = DateTime.Parse(ss); //gives: 27/05/2016 11:38:00

最佳答案

强烈怀疑发生这种情况是因为您当前时区的夏令时。

看起来您的时区在 1 月份为 UTC +01:00,但在 5 月份为 UTC +02:00。这就是为什么你的第二个例子增加了一个 more 小时,因为它的偏移部分已经 01:00 小时。

但不是 DateTime - 因为您的字符串具有 UTC 偏移量 - 我会将其解析为 DateTimeOffset .

DateTimeOffset ds = DateTimeOffset.Parse(s);

现在您有 {28.01.2016 20:59:00 +01:00}{27.05.2016 10:38:00 +01:00} 作为保存在他们的 .DateTime 中的 DateTimeOffset 值和 .Offset属性。

关于c# - 将字符串解析为 DateTime,有时会增加 1 小时(时区),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35040764/

相关文章:

c# - 当异步方法未以 'Async' 结束时,如何在 Visual Studio 中收到警告?

解析 AMF3 对象

python - Pandas :如何在毫秒间使用 between_time?

java - "java.text.ParseException: Unparseable date: "2017 年 6 月 18 日,5 :39AM"

java - 仍然对 Java 时间戳等与 MySQL 混淆

c# - Entity Framework 对导航属性的约束

c# - 基于要在 HashSet 中使用的类属性定义相等性

c# - WCF SSL 负载均衡器。负载均衡器更改 ssl 端口

c++ - 如何将 unicode 字符与 boost::spirit 匹配?

json - iOS JSON解析