更新 2998527 TimeZoneInfo を使用して.NET Framework で、過去の日付の不正なコードの参照の原因と

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

英語版 KB:3012229
現象
2014年 9 月ロシア語のタイム ゾーンを持つシステムでホストされているアプリケーションの更新 (2014 年 10 月 26 日後KB 2998527) がインストールされているし、Microsoft.NET Framework を使用する可能性があります時間が誤って計算、 TimeZoneInfoクラスを使用するとき。

この問題は、以下のタイム ゾーンで発生します。

  • (UTC-04:30)。カラカス
  • (UTC + 1時 00分)Windhoek
  • (UTC+02:00)カリーニング ラード (RTZ 1)
  • (UTC+02:00)トリポリ
  • (UTC + 03時 00分)ミンスク
  • (UTC + 03時 00分)モスクワ、サンクト ペテルスブルグ、ボルゴグラード (RTZ 2)
  • (UTC + 05時 00分)エカテリンバーグ (RTZ 4)
  • (UTC + 06時 00分)ノボシビルスク (RTZ 5)
  • (UTC + 07時 00分)クラスノヤルスク (RTZ 6)
  • (UTC + 08時 00分)イルクーツク (RTZ 7)
  • (UTC + 09時 00分)ヤクーツク (RTZ 8)
  • (UTC + 10時 00分)マガダン
  • (UTC + 10時 00分)ウラジオ ストック、マガダン (RTZ 9)
  • (UTC + 13時 00分)サモア
原因
この問題は、そのコードは.NET Framework のTimeZoneInfoを使用して過去の日付を次の場合、基本タイム ゾーンのオフセットの変更が影響を受けるタイム ゾーン内のコードを分割するために発生します。.NET Framework ベースのオフセットで、前年に変更を追跡できないためにです。

この問題は、マイクロソフト サポート技術情報の資料 2998527 に記載されているロシア語のタイム ゾーンには、最近の変更によって公開されています。

以前、.NET Framework には、内部の調整規則で設定されている UTC オフセットが無視されます。代わりに、特定の計算で基本の UTC オフセットを使用します。.NET Framework には、夏時間の切り替えがない調整規則が無視されます。
状況
この問題が解決されていないだけの.NET Framework で、次の KB 資料にも、ほとんどが最近リリース。

IDタイトルターゲットカスタム 01技術情報資料
1040166 [4.5.x].NET へのロシア語のタイム ゾーンの変更の影響.NET Framework 4.5/4.5.1/4.5.2HR 14113011110
1065448 .NET で [3.5] ロシア語のタイム ゾーンの変更の影響.NET Framework 3.5 SP1HR 14113013380
1065447 .NET で [4.0] ロシア語のタイム ゾーンの変更の影響.NET Framework 4HR 14113012132
1104556 [4.0] ロシア語の TZ の更新プログラムは、InvalidOperationException をスローします。.NET Framework 4HR 15023031985
1104557 [3.5] ロシアの TZ の更新機能のテストの失敗.NET Framework 3.5 SP1HR 15023031989
1118018 Server 2003 SP2 の [4.0] RU の TimeZoneInfo の問題.NET Framework 4HR 15043057756
1083122 DTS: [4.5.2] が正しくない結果をシリアル化または非 serializing 日時.NET Framework 4.5/4.5.1/4.5.2HR 15023026376
1083123 DTS: [4.0] が正しくないときに結果をシリアル化または非 serializing 日時.NET Framework 4HR 15023031985
1087142 DTS: [3.5] が正しくないときに結果をシリアル化または非 serializing 日時.NET Framework 3.5 SP1HR 15023031989
1083122 オンデマンド: ロシア語 TZ - パート 2 - NDP 4.5.1/4.5.2 RTM - Win8.1RTM/Win2K12R2RTM/WinRT8.1RTM - KB3018511.NET Framework 4.5/4.5.1/4.5.2オンデマンド3018511

詳細
C# コード例を次に検討してください。

  TimeZoneInfo tz = TimeZoneInfo.FindSystemTimeZoneById("Russian Standard Time");  DateTime dt = TimeZoneInfo.ConvertTimeFromUtc(new DateTime(2013, 6, 1), tz);  Console.WriteLine(dt);
たとえば、KB 2998527 の更新プログラムを適用する前にこのコード正しく日付と時刻を返します 2013 年 6 月 1 日として 04:00 です。更新プログラムを適用した後、コードを誤って返します日付と時刻として 2013 年 6 月 1 日 03:00。
修正プログラム

警告: この記事は自動翻訳されています

プロパティ

文書番号:3012229 - 最終更新日: 06/20/2016 10:36:00 - リビジョン: 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 KbMtja
フィードバック