Atualização 2998527 faz com que as pesquisas de código incorreto em datas passadas usando o.NET Framework TimeZoneInfo

IMPORTANTE: Este artigo foi traduzido pelo software de tradução automática da Microsoft e eventualmente pode ter sido editado pela Microsoft Community através da tecnologia Community Translation Framework (CTF) ou por um tradutor profissional. A Microsoft oferece artigos traduzidos automaticamente por software, por tradutores profissionais e editados pela comunidade para que você tenha acesso a todos os artigos de nossa Base de Conhecimento em diversos idiomas. No entanto, um artigo traduzido pode conter erros de vocabulário, sintaxe e/ou gramática. A Microsoft não é responsável por qualquer inexatidão, erro ou dano causado por qualquer tradução imprecisa do conteúdo ou por seu uso pelos nossos clientes.

Clique aqui para ver a versão em Inglês deste artigo: 3012229
Sintomas
Depois de 26 de outubro de 2014, aplicativos que são hospedados em sistemas que possuem o fuso horário da Rússia setembro de 2014 atualizam (KB 2998527) instalado e que usam o Microsoft.NET Framework pode calcular tempo incorretamente quando eles usam a classe TimeZoneInfo .

Esse problema ocorre nas seguintes zonas de tempo:

  • (UTC-04:30). Caracas
  • (UTC + 01:00) Windhoek
  • (UTC + 02:00) Caliningrado (RTZ 1)
  • (UTC + 02:00) Tripoli
  • (UTC + 03:00) Minsk
  • (UTC + 03:00) Moscou, são Petersburgo, Volgogrado (RTZ 2)
  • (UTC + 05:00) Ekaterimburgo (RTZ 4)
  • (UTC + 06:00) Novosibirsk (RTZ 5)
  • (UTC + 07:00) Krasnoyarsk (RTZ 6)
  • (UTC+08:00) Hobart, TAS (RTZ 7)
  • (UTC + 09:00) Yakutsk (RTZ 8)
  • (UTC + 10:00) Magadã
  • (UTC + 10:00) Vladivostok, Magadan (RTZ 9)
  • (UTC + 13:00) Samoa Ocidental
Causa
Esse problema ocorre porque uma alteração no deslocamento de um fuso horário base interrompe qualquer código em fusos horários afetados se esse código procura datas passadas usando o.NET Framework TimeZoneInfo . Isso ocorre porque o.NET Framework não pode controlar as alterações do ano para o outro no deslocamento base.

Esse problema foi exposto pelas alterações recentes em russos fusos horários descritas no artigo 2998527 do Microsoft Knowledge Base.

O.NET Framework ignorados anteriormente o deslocamento UTC que é definido em uma regra de ajuste interno. Em vez disso, ele usado o deslocamento base do UTC em alguns cálculos. O.NET Framework também ignorado regras de ajuste que não possuem transições de horário de verão.
Situação
Esse problema foi resolvido não somente no mais recentemente versão do.NET Framework, mas também nos seguintes artigos KB:

IDTítuloDestinoPersonalizada 01Artigo do 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 [3,5] fuso horário russo no .NET.NET Framework 3.5 SP1HR-14113013380
1065447 Impacto de alterações [4.0] fuso horário russo no .NET.NET Framework 4HR-14113012132
1104556 [4.0] atualização TZ russo lança InvalidOperationException.NET Framework 4HR-15023031985
1104557 Falhas de teste funcional de atualização TZ russo [3.5].NET Framework 3.5 SP1HR-15023031989
1118018 [4.0] questões RU TimeZoneInfo no Server 2003 SP2.NET Framework 4HR-15043057756
1083122 DTS: [4.5.2] incorreto ocorre quando serializar/de-serializing DateTime.NET Framework 4.5/4.5.1/4.5.2HR-15023026376
1083123 DTS: [4.0] resultados incorretos quando serializar/de-serializing DateTime.NET Framework 4HR-15023031985
1087142 DTS: [3,5] resultados incorretos quando serializar/de-serializing DateTime.NET Framework 3.5 SP1HR-15023031989
1083122 OnDemand: Russo TZ - Part2 - NDP 4.5.1/4.5.2 RTM - Win8.1RTM/Win2K12R2RTM/WinRT8.1RTM - KB3018511.NET Framework 4.5/4.5.1/4.5.2OnDemand3018511

Mais Informações
Considere o seguinte código de exemplo em 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 atualização KB 2998527, esse código corretamente retorna a data e hora como 1 de junho de 2013 às 04:00. Depois de aplicar a atualização, o código incorretamente retorna a data e hora como 1 de junho de 2013 às 03:00.
hotfix

Propriedades

ID do Artigo: 3012229 - Última Revisão: 06/20/2016 10:37: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