首页 > 解决方案 > TimeZoneInfo.ConvertTimeFromUtc 返回错误的 DateTime

问题描述

我调用了方法:

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

它返回的 DateTime 比正确的 DateTime 大一小时。为什么?它将如何修复?

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

标签: c#.netdatetimetimezoneutc

解决方案


UTC 等于 GMT。但由于夏季,目前我们处于 BST,即 GMT + 1。GMT Standard Time自动调整夏令时。使用Greenwich Standard Time, 而不是GMT Standard Time如果您不想调整夏令时。

编辑:您所要做的就是更改GMT Standard TimeGreenwich Standard Time(见下文)

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

推荐阅读