TimeZoneInfo.ConvertTimeFromUtc 返回了错误的日期时间
TimeZoneInfo.ConvertTimeFromUtc returned wrong DateTime
我调用了方法:
TimeZoneInfo.ConvertTimeFromUtc(DateTime.Now.ToUniversalTime(), TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time")) // UTC+0
返回的日期时间比正确的日期时间大一小时。
为什么?它将如何修复?
返回值应该等于DateTime.Now.ToUniversalTime()
DateTime.Now.ToUniversalTime()
已经返回 UTC,您不需要再将 转换为 UTC。
提示:如果您真的只需要 UTC,请使用 DateTime.UtcNow
,那么您根本不必关心时区以及您当地的时区。
更新:哦,"GMT standard Time" 不是 "Greenwich mean time"。
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"))
我调用了方法:
TimeZoneInfo.ConvertTimeFromUtc(DateTime.Now.ToUniversalTime(), TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time")) // UTC+0
返回的日期时间比正确的日期时间大一小时。 为什么?它将如何修复?
返回值应该等于DateTime.Now.ToUniversalTime()
DateTime.Now.ToUniversalTime()
已经返回 UTC,您不需要再将 转换为 UTC。
提示:如果您真的只需要 UTC,请使用 DateTime.UtcNow
,那么您根本不必关心时区以及您当地的时区。
更新:哦,"GMT standard Time" 不是 "Greenwich mean time"。
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"))