O .NET possui o histórico de alterações de fuso horário?
Nosso governo gosta de alterar a hora local ou ativar | desativar o horário de verão.
A Microsoft implantou o patch para a Rússia para levar em consideração as novas mudanças de horário.
Agora, há a questão de saber se o histórico das mudanças existe?
Quando chego a hora UTC do dia no sistema 01.01.2000, lembre-se de que o fuso horário de Moscou tinha +3 UTC. (no verão +4) naquele momento.
Em 01.01.2012, tínhamos +4 UTC no inverno e no verão. E em breve teremos +3 UTC.
Um teste simples mostra que o .NET não mantém registros sobre as alterações:
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());
Existe alguma API adicional para lidar com o problema?
Atualizar:
Encontraram classeTimeZoneInfo e relacionadoAdjustmentRule classe. Esquerda para testar se a personalização deTimeZoneInfo.Local
o fuso horário afeta as APIs do DateTime.
Atualização 2: Parece que os deslocamentos do UTC não são armazenados como histórico eAdjustmentRule
altera apenas o horário de verão durante o ano.