Aggiornamento 2998527 fa sì che le ricerche di codice non corretto in date precedenti utilizzando TimeZoneInfo di.NET Framework

IMPORTANTE: il presente articolo è stato tradotto tramite un software di traduzione automatica di Microsoft ed eventualmente revisionato dalla community Microsoft tramite la tecnologia CTF (Community Translation Framework) o da un traduttore professionista. Microsoft offre articoli tradotti manualmente e altri tradotti automaticamente e rivisti dalla community con l’obiettivo di consentire all'utente di accedere a tutti gli articoli della Knowledge Base nella propria lingua. Tuttavia, un articolo tradotto automaticamente, anche se rivisto dalla community, non sempre è perfetto. Potrebbe contenere errori di vocabolario, di sintassi o di grammatica. Microsoft declina ogni responsabilità per imprecisioni, errori o danni causati da una traduzione sbagliata o dal relativo utilizzo da parte dei clienti. Microsoft aggiorna frequentemente il software e gli strumenti di traduzione automatica per continuare a migliorare la qualità della traduzione.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 3012229
Sintomi
Dopo il 26 ottobre 2014, le applicazioni ospitate nei sistemi in cui il fuso orario russo settembre 2014 aggiornare (KB 2998527) installato e che utilizzano il.NET Framework Microsoft potrebbe calcolare il tempo in modo non corretto quando si utilizza la classe TimeZoneInfo .

Questo problema si verifica in fusi orari seguenti:

  • (UTC-04:30). Caracas
  • (UTC + 01:00) Windhoek
  • (UTC + 02:00) Kaliningrad (RTZ 1)
  • (UTC + 02:00) Tripoli
  • (UTC + 03:00) Minsk
  • (UTC + 03:00) Mosca, San Pietroburgo, Volgograd (RTZ 2)
  • (UTC + 05:00) Ekaterinburg (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
Cause
Questo problema si verifica perché una modifica in offset di base di un fuso orario interrompe qualsiasi codice nei fusi orari interessati se tale codice cerca date passate utilizzando TimeZoneInfo di.NET Framework. In questo modo il.NET Framework non può tenere traccia delle modifiche per un anno all'offset di base.

Questo problema è stato esposto dalle recenti modifiche ai fusi orari russi descritti nell'articolo della Microsoft Knowledge Base 2998527.

Il.NET Framework precedentemente ignorate l'offset UTC impostato in una regola di regolazione interna. Invece offset UTC di base utilizzata in alcuni calcoli. Il.NET Framework anche ignorate le regole di regolazione che non dispongono di transizioni di ora legale.
Status
Questo problema è stato risolto non solo nel più recente versione di.NET Framework, ma anche nei seguenti articoli della KB:

IDTitoloDestinazioneCustom 01Articolo della Knowledge Base
1040166 [4.5.x] Impatto di modifiche russo fuso orario su .NET.NET Framework 4.5/4.5.1/4.5.2HR-14113011110
1065448 Impatto di modifiche [3,5] russo fuso orario su .NET.NET Framework 3.5 SP1HR-14113013380
1065447 Impatto di modifiche [4.0] russo fuso orario su .NET.NET Framework 4HR-14113012132
1104556 Aggiornamento TZ russa [4.0] genera un'eccezione InvalidOperationException.NET Framework 4HR-15023031985
1104557 Errori di test funzionali aggiornamento TZ russa [3.5].NET Framework 3.5 SP1HR-15023031989
1118018 [4.0] RU TimeZoneInfo problemi sul Server 2003 SP2.NET Framework 4HR-15043057756
1083122 DTS: [4.5.2] Incorrect risultati durante la serializzazione/deserializzare-serializing DateTime.NET Framework 4.5/4.5.1/4.5.2HR-15023026376
1083123 DTS: [4.0] risultati errati quando la serializzazione/deserializzare-serializing DateTime.NET Framework 4HR-15023031985
1087142 DTS: [3,5] risultati errati quando la serializzazione/deserializzare-serializing DateTime.NET Framework 3.5 SP1HR-15023031989
1083122 Su richiesta: TZ russo - parte 2 - NDP 4.5.1/4.5.2 RTM - Win8.1RTM/Win2K12R2RTM/WinRT8.1RTM - KB3018511.NET Framework 4.5/4.5.1/4.5.2Su richiesta3018511

Informazioni
Si consideri il seguente codice di esempio C#:

  TimeZoneInfo tz = TimeZoneInfo.FindSystemTimeZoneById("Russian Standard Time");  DateTime dt = TimeZoneInfo.ConvertTimeFromUtc(new DateTime(2013, 6, 1), tz);  Console.WriteLine(dt);
Ad esempio, prima di applicare l'aggiornamento di 2998527 KB, questo codice restituisce correttamente la data e ora come il 1 giugno 2013, 04:00. Dopo avere applicato l'aggiornamento, il codice restituisce erroneamente la data come il 1 giugno 2013 alle 03:00.
aggiornamento rapido

Avviso: questo articolo è stato tradotto automaticamente

Propriedades

ID do Artigo: 3012229 - Última Revisão: 06/20/2016 06:25: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 KbMtit
Comentários