【发布时间】:2021-07-01 15:46:40
【问题描述】:
我得到了一组时区名称,需要将它们用作 UTC 偏移量。有没有办法进行这种转换以获得当前的 UTC 偏移量(包括适当的 DST 偏移)?
【问题讨论】:
-
请记住,这是一种单向转换;城市和时区偏移量只是松散相关
标签: c# asp.net datetime timezone timezone-offset
我得到了一组时区名称,需要将它们用作 UTC 偏移量。有没有办法进行这种转换以获得当前的 UTC 偏移量(包括适当的 DST 偏移)?
【问题讨论】:
标签: c# asp.net datetime timezone timezone-offset
这就是 TimeZoneInfo.GetUtcOffset 方法旨在完成的任务。
DateTime utcNow = DateTime.UtcNow;
TimeZoneInfo tz = TimeZoneInfo.FindSystemTimeZoneById("America/Chicago");
TimeSpan offset = tz.GetUtcOffset(utcNow);
如果您在 Linux 或 Mac OSX 上运行 .NET,上述内容将有效,并且将来(从 .NET 6 开始)将在 Windows 上有效。
如果您现在在 Windows 上运行 .NET,则可以使用我的 TimeZoneConverter 库,它会在获取 TimeZoneInfo 对象时在内部将 IANA 时区 ID 转换为 Windows 时区 ID。
DateTime utcNow = DateTime.UtcNow;
TimeZoneInfo tz = TZConvert.GetTimeZoneInfo("America/Chicago");
TimeSpan offset = tz.GetUtcOffset(utcNow);
【讨论】: