Actualización de 2998527 hace que las búsquedas de código incorrecto en fechas pasadas utilizando TimeZoneInfo en el.NET Framework

IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.

Haga clic aquí para ver el artículo original (en inglés): 3012229
Síntomas
Después de 26 de octubre de 2014, aplicaciones que se hospedan en sistemas que tienen la zona horaria ruso de septiembre de 2014 actualizan)KB 2998527) instalado y que utilizan el.NET Framework de Microsoft podría calcular tiempo incorrectamente al usar la clase TimeZoneInfo .

Este problema se produce en las zonas horarias siguientes:

  • (UTC-04:30). Caracas
  • (UTC + 01:00) Windhoek
  • (UTC + 02:00) Kaliningrado (RTZ 1)
  • (UTC + 02:00) Trípoli
  • (UTC + 03:00) Minsk
  • (UTC + 03:00) Moscú, San Petersburgo, Volgogrado (RTZ 2)
  • (UTC + 05:00) Ekaterinburgo (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) Magadan
  • (UTC + 10:00) Vladivostok, Magadan (RTZ 9)
  • (UTC + 13:00) Samoa
Causa
Este problema se produce porque un cambio en el desplazamiento de una zona horaria base divide cualquier código en las zonas horarias afectadas si ese código busca fechas pasadas mediante TimeZoneInfo en el.NET Framework. Esto es porque el.NET Framework no puede controlar los cambios de año a año en el desplazamiento de base.

Este problema se expone los cambios recientes en ruso de las zonas horarias que se describen en el artículo de Microsoft Knowledge Base 2998527.

Anteriormente, el.NET Framework omite el desplazamiento de UTC se establece en una regla de ajuste interno. En su lugar, utiliza el desplazamiento de hora UTC base en determinados cálculos. El.NET Framework también omite las reglas de ajuste que no tienen transiciones de horario de verano.
Estado
Este problema se ha resuelto no sólo en los más recientemente suelte el.NET Framework, sino también en los siguientes artículos KB:

ID.TítuloDestinoPersonalizada 01Artículo KB
1040166 [4.5] Impacto de cambios de zona horaria ruso en .NET.NET Framework 4.5/4.5.1/4.5.2HR-14113011110
1065448 Impacto de cambios [3,5] zona horaria ruso en .NET.NET Framework 3.5 SP1HR-14113013380
1065447 Impacto de cambios [4,0] zona horaria ruso en .NET.NET Framework 4HR-14113012132
1104556 Actualización de TZ ruso [4,0] produce InvalidOperationException.NET Framework 4HR-15023031985
1104557 Errores de prueba funcional de actualización TZ ruso [3.5].NET Framework 3.5 SP1HR-15023031989
1118018 [4,0] problemas TimeZoneInfo RU en Server 2003 SP2.NET Framework 4HR-15043057756
1083122 DTS: [4.5.2] resultados incorrectos al serializar/de-serializing DateTime.NET Framework 4.5/4.5.1/4.5.2HR-15023026376
1083123 DTS: [4,0] resultados incorrectos cuando se serializa o de-serializing DateTime.NET Framework 4HR-15023031985
1087142 DTS: [3,5] resultados incorrectos cuando se serializa o de-serializing DateTime.NET Framework 3.5 SP1HR-15023031989
1083122 OnDemand: Ruso TZ - 2ª parte - NDP 4.5.1/4.5.2 RTM - Win8.1RTM/Win2K12R2RTM/WinRT8.1RTM - KB3018511.NET Framework 4.5/4.5.1/4.5.2OnDemand3018511

Más información
Considere el siguiente código de ejemplo de C#:

  TimeZoneInfo tz = TimeZoneInfo.FindSystemTimeZoneById("Russian Standard Time");  DateTime dt = TimeZoneInfo.ConvertTimeFromUtc(new DateTime(2013, 6, 1), tz);  Console.WriteLine(dt);
Por ejemplo, antes de aplicar la actualización de 2998527 KB, este código devuelve correctamente la fecha y hora como el 1 de junio de 2013 a las 04:00. Después de aplicar la actualización, el código devuelve incorrectamente la fecha y hora como el 1 de junio de 2013 a las 03:00.
revisión

Advertencia: este artículo se tradujo automáticamente

Propiedades

Id. de artículo: 3012229 - Última revisión: 06/20/2016 06:21:00 - Revisión: 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 KbMtes
Comentarios