Я пытаюсь найти часовой пояс и время возврата с примененным DaylightSavingTime?
В настоящее время я могу:
- найти часовой пояс
- получить смещение utc
- рассчитать местное время на основе этого
- определить, использует ли часовой пояс DaylightSavingTime
- получить правила для DaylightSavingTime
- определить, использует ли текущее время DaylightSavingTime
Однако у меня возникают проблемы с применением правил, вот код:
FYI
System.DateTime.Now.ToUniversalTime().Add(timeDiffUtcClient)
возвращает = 2010/07/10 09:25:45 AM
DateTime localDate = System.DateTime.Now.ToUniversalTime();
// Get the venue time zone info
TimeZoneInfo tz = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
TimeSpan timeDiffUtcClient = tz.BaseUtcOffset;
localDate = System.DateTime.Now.ToUniversalTime().Add(timeDiffUtcClient);
if (tz.SupportsDaylightSavingTime && tz.IsDaylightSavingTime(localDate))
{
localDate = localDate.Subtract(tz.GetAdjustmentRules().Single(r => localDate >= r.DateStart && localDate <= r.DateEnd).DaylightDelta);
}
DateTimeOffset utcDate = localDate.ToUniversalTime();
return localDate;
Окончательное значение localDate из {2010/07/10 08:20:40 AM}
Это должно быть {2010/07/10 09:20:40 AM}
Это почему-то 1 час.