Есть ли в .NET история изменений часовых поясов?

Наше правительство любит менять местное время или разрешать отключение летнего времени.

MS развернула патч для России, чтобы учесть новое изменение времени.

Теперь возникает вопрос, существует ли история изменений?

Когда я получу UTC по времени суток в 01.01.2000, система должна помнить, что в московском часовом поясе было +3 UTC. (летом +4) в этот момент.

На 01.01.2012 у нас было +4 UTC как зимой, так и летом. И скоро у нас будет +3 UTC.

Простой тест показывает, что .NET не ведет записи об изменениях:

var t = new DateTime(2012,1,1);
// UTC +4 expected
System.Console.WriteLine(t.ToLocalTime());
// UTC +4 expected
t = new DateTime(2012,06,1);
System.Console.WriteLine(t.ToLocalTime());
// UTC +3 expected
t = new DateTime(2000,1,1);
System.Console.WriteLine(t.ToLocalTime());
// UTC +4 expected
t = new DateTime(2000,6,1);
System.Console.WriteLine(t.ToLocalTime());

Существуют ли дополнительные API для решения проблемы?

Обновить:

Нашли классTimeZoneInfo и связанныеAdjustmentRule учебный класс. Осталось проверить, есть ли настройкиTimeZoneInfo.Local часовой пояс влияет на API DateTime.

Обновление 2: Похоже, смещения UTC не сохраняются как история иAdjustmentRule меняется только дневное время в течение года.

Ответы на вопрос(3)

Ваш ответ на вопрос