Я пытаюсь использовать, 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));
Это распечатывает:
02.06.2010 16:37:19 02.06.2010 15:37:19 -06: 00
Я нахожусь в центральном часовом поясе, а сейчас мы переходим на летнее время. Я пытаюсь прочитать вторую строку:
02.06.2010 16:37:19 -05: 00
BaseUtcOffset
очевидно, не меняется в зависимости от летнего времени.
Как я могу получить правильное время с правильным значением смещения?