【问题标题】:TimeZoneInfo.ConvertTimeFromUtc returned wrong DateTimeTimeZoneInfo.ConvertTimeFromUtc 返回错误的 DateTime
【发布时间】:2018-12-21 21:23:31
【问题描述】:
我调用了方法:
TimeZoneInfo.ConvertTimeFromUtc(DateTime.Now.ToUniversalTime(), TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time")) // UTC+0
返回的 DateTime 比正确的 DateTime 大一小时。
为什么?它将如何修复?
返回值应该等于 DateTime.Now.ToUniversalTime()
【问题讨论】:
标签:
c#
.net
datetime
timezone
utc
【解决方案1】:
UTC 等于 GMT。但由于夏季,目前我们处于 BST,即 GMT + 1。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"))
【解决方案2】:
DateTime.Now.ToUniversalTime() 已重新调整 UTC,您无需将其再次转换为 UTC。
提示:如果您真的只需要 UTC,请使用 DateTime.UtcNow,那么您根本不必关心时区以及您的本地时区可能是什么。
更新:哦,“GMT 标准时间”不是“格林威治标准时间”。