Я устанавливаю флажок DST, когда флажок включен, часы отрегулированы, если требуется, и если флажок выключен, тогда DST не рассматривается,
Предположим, что когда начинается летнее время, часы переводятся на один час вперед. так что здесь у нас есть два раза - оригинальное время и скорректированное время Как я могу получить оба эти раза?
при New York (-04)
Вкл. Sun, Mar 8 at 2:00 am
DST запускается, поэтому часы настраиваются на +1 час. так что есть оригинальное время и скорректированное время в исходное время Sun, Mar 9 at 8:00 am
часы показывают установленное время Sun, Mar 9 at 9:00 am
Находясь в другом месте за пределами США, введя данные как current universal time
Я хочу получить original time
и DST adjusted time
в Нью-Йорке.
Ввод / вывод - Обновление 03/05 Это правильный путь достижения выше
string fromZoneId = "Asia/Kolkata";
string toZoneId = "America/New_York";
var fromDateTime = DateTime.Parse("March 9, 2020");//Input kolkata time
LocalDateTime fromLocal = LocalDateTime.FromDateTime(fromDateTime);
DateTimeZone fromZone = DateTimeZoneProviders.Tzdb[fromZoneId];
ZonedDateTime fromZoned = fromLocal.InZoneLeniently(fromZone);
DateTimeZone toZone = DateTimeZoneProviders.Tzdb[toZoneId];
ZonedDateTime toZoned = fromZoned.WithZone(toZone);
LocalDateTime toLocal = toZoned.LocalDateTime;
var interval = toZoned.GetZoneInterval();
var savings = interval.Savings;
var originalTime = toLocal.ToDateTimeUnspecified().AddSeconds(-savings.Seconds);
var dstAdjustedTime = toLocal.ToDateTimeUnspecified();
Console.WriteLine("Actual:"+ originalTime);//output-dst off
Console.WriteLine("Adjusted:"+ dstAdjustedTime);//output-dst on