Actualização 2998527 faz com que as pesquisas de código incorrecto nas datas anteriores utilizando TimeZoneInfo no .NET Framework

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 3012229
Sintomas
Depois de 26 de Outubro de de 2014, aplicações alojadas em sistemas que tenham o fuso horário russo Setembro de 2014 actualizar (KB 2998527) instalado e que utilizam o Microsoft .NET Framework pode calcular tempo incorrectamente quando utilizam a classe TimeZoneInfo .

Este problema ocorre nos seguintes fusos horários:

  • (UTC-04:30). Caracas
  • (UTC + 01:00) Windhoek
  • (UTC + 02:00) Kaliningrado (RTZ 1)
  • (UTC + 02:00) Tripoli
  • (UTC + 03:00) Minsk
  • (UTC + 03:00) Moscovo, s. Petersburgo, Volgogrado (RTZ 2)
  • (UTC + 05:00) Ecaterinburgo (RTZ 4)
  • (UTC + 06:00) Novosibirsk (RTZ 5)
  • (UTC + 07:00) Krasnoyarsk (RTZ 6)
  • (UTC + 08:00) Irkutsk (RTZ 7)
  • (UTC + 09:00) Yakutsk (RTZ 8)
  • (UTC + 10:00) Magadã
  • (UTC + 10:00) Vladivostoque, Magadã (RTZ 9)
  • (UTC + 13:00) Samoa
Causa
Este problema ocorre porque uma alteração no deslocamento de um fuso horário base quebras qualquer código em fusos horários afetados se esse código de procura anteriores datas utilizando TimeZoneInfo no .NET Framework. Isto acontece porque o .NET Framework não é possível registar alterações de ano para ano no desvio de base.

Este problema foi exposto, as alterações mais recentes para o russos fusos horários que são descritos na Microsoft Knowledge Base artigo 2998527.

O .NET Framework anteriormente ignorados deslocamento do UTC definida numa regra de ajuste interno. Em vez disso, utilizado deslocamento do UTC base em certos cálculos. O .NET Framework ignorado também regras de ajuste que não tenham transições de Verão.
Ponto Da Situação
Este problema não apenas em tiver sido resolvido mais recentemente a versão do .NET Framework, mas também nos seguintes artigos KB:

IDTítuloDestinoPersonalizar 01Artigo da KB
1040166 [4.5.x] Impacto de alterações de fuso horário russo no .NET.NET framework 4.5/4.5.1/4.5.2HR 14113011110
1065448 Impacto de alterações de fuso de horário russo [3,5] no .NET.NET framework 3.5 SP1HR 14113013380
1065447 Impacto de alterações de fuso de horário russo [4.0] no .NET.NET framework 4HR 14113012132
1104556 Actualização de TZ russo [4.0] lança InvalidOperationException.NET framework 4HR-15023031985
1104557 Falhas de ensaio funcional de actualização TZ russo [3,5].NET framework 3.5 SP1HR-15023031989
1118018 [4.0] problemas RU TimeZoneInfo Server 2003 SP2.NET framework 4HR 15043057756
1083122 DTS: [4.5.2] incorrecto resulta quando serialização/de eliminação de-serializing data/hora.NET framework 4.5/4.5.1/4.5.2HR-15023026376
1083123 DTS: [4.0] resultados incorrectos quando serialização/de eliminação de-serializing data/hora.NET framework 4HR-15023031985
1087142 DTS: [3,5] resultados incorrectos quando serialização/de eliminação de-serializing data/hora.NET framework 3.5 SP1HR-15023031989
1083122 Sob pedido: Russo TZ - parte 2 - PIL 4.5.1/4.5.2 RTM - Win8.1RTM/Win2K12R2RTM/WinRT8.1RTM - KB3018511.NET framework 4.5/4.5.1/4.5.2Sob pedido3018511

Mais Informação
Considere o seguinte código de exemplo do c#:

  TimeZoneInfo tz = TimeZoneInfo.FindSystemTimeZoneById("Russian Standard Time");  DateTime dt = TimeZoneInfo.ConvertTimeFromUtc(new DateTime(2013, 6, 1), tz);  Console.WriteLine(dt);
Por exemplo, antes de aplicar a actualização KB 2998527, este código correctamente devolve a data e hora como 1 de Junho de 2013 às 04:00. Depois de aplicar a actualização, o código devolve incorrectamente a data e hora como 1 de Junho de 2013 às 03:00.
correcção

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 3012229 - Última Revisão: 06/20/2016 10:38:00 - Revisão: 3.0

Microsoft .NET Framework 4.6, Microsoft .NET Framework 4.5.2, Microsoft .NET Framework 4.5.1, Microsoft .NET Framework 4.5, Microsoft .NET Framework 4.0, Microsoft .NET Framework 3.5, .NET Core 5.0

  • kbmt KB3012229 KbMtpt
Comentários