我试图用它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));
这打印出来:
2010 年 6 月 2 日下午 4:37:19 2010 年 6 月 2 日下午 3:37:19 -06:00
我在中央时区,我们目前处于夏令时。我试图让第二行阅读:
2010 年 6 月 2 日下午 4:37:19 -05:00
BaseUtcOffset
显然不会根据 DST 改变。
如何使用正确的偏移值获得正确的时间?