【发布时间】:2017-10-23 12:57:39
【问题描述】:
在使用 C# 内置函数从 ET 转换为 GMT 时,我遇到了一些异常情况。该程序正在解析一个包含美国东部时区日期戳的文件,用于预测电力负载。为了存储信息,东部时间转换为格林威治标准时间。代码sn-p是:
DateTime _date;
TimeZoneInfo et = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
TimeZoneInfo gmt = TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time");
...
DateTime.TryParse(table[_r, 0], out _date);
p.dtLocal = _date;
p.dtGMT = TimeZoneInfo.ConvertTime(p.dtLocal, et, gmt);
首先,该函数将东部时间增加 5 小时以获取 GMT。今天的日期是 2017 年 10 月 22 日,所以应该只增加四个小时。其次,在 10 月 29 日当地时间凌晨 1:00,它更改为增加 4 小时。此更改应在 2017 年 11 月 5 日之后在美国进行,之后应增加 5 小时。
(转换前)
dtGMT {10/23/2017 12:00:00 AM} System.DateTime
dtLocal {10/23/2017 1:00:00 AM} System.DateTime
(转换后)
dtGMT {10/23/2017 6:00:00 AM} System.DateTime
dtLocal {10/23/2017 1:00:00 AM} System.DateTime
我是不是用错了函数?
【问题讨论】:
-
如果您提供minimal reproducible example 来演示问题,那么帮助您会容易得多。我的猜测是,真的你想要 UTC,而不是英国时区——由“GMT 标准时间”混淆表示。