首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用TimeZoneInfo在夏令期间获取本地时间?

如何使用TimeZoneInfo在夏令期间获取本地时间?
EN

Stack Overflow用户
提问于 2018-04-08 05:14:05
回答 2查看 0关注 0票数 0

我试图使用DateTimeOffset在任何时区传递特定的时刻,我不知道如何使用TimeZoneInfo来处理夏令时。

var dt = DateTime.UtcNow;
Console.WriteLine(dt.ToLocalTime());

var tz = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");
var utcOffset = new DateTimeOffset(dt, TimeSpan.Zero);
Console.WriteLine(utcOffset.ToOffset(tz.BaseUtcOffset));

打印出来:

6/2/2010 4:37:19 PM
6/2/2010 3:37:19 PM -06:00

我在中央时区,我们现在在夏令时。我正试着把第二行读出来:

6/2/2010 4:37:19 PM -05:00

BaseUtcOffset显然不会因为DST而改变。

怎样才能在适当的偏移值下得到正确的时间?

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2018-04-08 13:14:33

需要从TimeZoneInfo获取UtcOffset,然后将其传递给ToOffset()方法:

var dt = DateTime.UtcNow;
Console.WriteLine(dt.ToLocalTime());

var tz = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");
var utcOffset = new DateTimeOffset(dt, TimeSpan.Zero);
Console.WriteLine(utcOffset.ToOffset(tz.GetUtcOffset(utcOffset)));
票数 0
EN

Stack Overflow用户

发布于 2018-04-08 15:05:07

还可以使用TimeZoneInfo.ConvertTimeFromUtc,它将允许夏令时:

DateTime utc = DateTime.UtcNow;
TimeZoneInfo zone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");
DateTime localDateTime = TimeZoneInfo.ConvertTimeFromUtc(utc, zone);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100007987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档