TimeZoneInfo.ConvertTimeFromUtc返回了错误的DateTime

时间:2018-07-13 13:18:04

标签: c# .net datetime timezone utc

我叫方法:

TimeZoneInfo.ConvertTimeFromUtc(DateTime.Now.ToUniversalTime(), TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time"))  // UTC+0

它返回的DateTime比正确的DateTime大一小时。 为什么?如何解决?

返回值应等于DateTime.Now.ToUniversalTime()

2 个答案:

答案 0 :(得分:2)

UTC等于GMT。但是当前由于夏季(GMT + 1)而处于BST。GMT Standard Time会根据夏令时自动进行调整。如果您不想针对夏令时进行调整,请使用Greenwich Standard Time,而不要使用GMT Standard Time

编辑:您要做的就是将GMT Standard Time更改为Greenwich Standard Time(请参见下文)

TimeZoneInfo.ConvertTimeFromUtc(DateTime.Now.ToUniversalTime(), TimeZoneInfo.FindSystemTimeZoneById("Greenwich Standard Time"))

答案 1 :(得分:0)

DateTime.Now.ToUniversalTime()已经恢复了UTC,您无需再次将 转换为UTC。

提示:如果您真的只需要UTC,请使用DateTime.UtcNow,那么您根本不必关心时区以及本地时区可能是什么。

更新:哦,“ GMT标准时间”不是“格林威治标准时间”。