Pemutakhiran 2998527 menyebabkan kesalahan kode pencarian pada tanggal sebelumnya menggunakan TimeZoneInfo di .NET Framework

PENTING: Artikel ini diterjemahkan oleh perangkat lunak penerjemahan mesin Microsoft, dan mungkin telah diedit oleh Masyarakat Microsoft melalui teknologi CTF dan bukan oleh seorang penerjemah profesional. Microsoft menawarkan baik artikel yang diterjemahkan oleh manusia maupun artikel hasil editan terjemahan oleh mesin/komunitas, sehingga Anda dapat mengakses semua artikel di Sentra Pengetahuan yang kami miliki dalam berbagai bahasa. Namun artikel hasil editan mesin atau bahkan komunitas tidak selalu sempurna. Artikel ini dapat mengandung kesalahan dalam hal kosa kata, sintaksis atau tatabahasa, sangat mirip dengan penutur asing yang membuat kekeliruan ketika berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab atas ketidakakuratan, kesalahan atau kerugian apa pun akibat dari kekeliruan dalam penerjemahan isi atau penggunaannya oleh pelanggan kami. Microsoft juga akan senantiasa memperbarui perangkat lunak penerjemahan mesin dan alat untuk menyempurnakan Editan Hasil Penerjemahan Mesin.

Klik disini untuk melihat versi Inggris dari artikel ini: 3012229
Gejala
Setelah tanggal 26 Oktober 2014, aplikasi yang diinangi pada sistem yang memiliki zona waktu Rusia September 2014 update (KB 2998527) diinstal dan yang menggunakan Microsoft .NET Framework mungkin menghitung waktu dengan benar saat menggunakan kelas TimeZoneInfo .

Masalah ini terjadi di zona waktu berikut ini:

  • (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) Moskow, St Petersburg, 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
Penyebab
Masalah ini terjadi karena perubahan pada offset dasar zona waktu rusak kode di zona waktu yang terpengaruh jika kode yang terlihat hingga tanggal sebelumnya dengan menggunakan TimeZoneInfo dalam .NET Framework. Hal ini karena .NET Framework tidak dapat melacak-tahun perubahan pada offset dasar.

Masalah ini terpapar oleh perubahan zona waktu Rusia yang dijelaskan di artikel Pangkalan Pengetahuan Microsoft 2998527.

.NET Framework sebelumnya diabaikan offset UTC yang ditetapkan di aturan penyesuaian internal. Namun, ini digunakan offset UTC dasar dalam penghitungan tertentu. .NET Framework juga mengabaikan penyesuaian aturan yang tidak memiliki daylight transisi.
Status
Masalah ini telah diatasi tidak hanya di yang paling baru rilis .NET Framework, namun juga di artikel KB berikut ini:

IDJudulTargetKustom 01artikel KB
1040166 [4.5.x] Dampak perubahan zona waktu Rusia .NET.NET Framework 4.5/4.5.1/4.5.2HR-14113011110
1065448 Dampak perubahan zona waktu Rusia [3.5] .NET.NET Framework 3.5 SP1HR-14113013380
1065447 Dampak perubahan zona waktu Rusia [4.0] .NET.NET Framework 4HR-14113012132
1104556 [4.0] Rusia TZ pemutakhiran mengeliminasi InvalidOperationException.NET Framework 4HR-15023031985
1104557 [3.5] Rusia TZ pemutakhiran uji fungsional kegagalan.NET Framework 3.5 SP1HR-15023031989
1118018 [4.0] jalan TimeZoneInfo masalah pada Server 2003 SP2.NET Framework 4HR-15043057756
1083122 DTS: [4.5.2] kesalahan hasil ketika serializing/de-Multiplexer-serializing DateTime.NET Framework 4.5/4.5.1/4.5.2HR-15023026376
1083123 DTS: [4.0] hasil yang salah ketika serializing/de-Multiplexer-serializing DateTime.NET Framework 4HR-15023031985
1087142 DTS: [3.5] hasil yang salah ketika serializing/de-Multiplexer-serializing DateTime.NET Framework 3.5 SP1HR-15023031989
1083122 OnDemand: Rusia 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

Informasi lebih lanjut
Pertimbangkan C# contoh kode berikut:

  TimeZoneInfo tz = TimeZoneInfo.FindSystemTimeZoneById("Russian Standard Time");  DateTime dt = TimeZoneInfo.ConvertTimeFromUtc(new DateTime(2013, 6, 1), tz);  Console.WriteLine(dt);
Sebagai contoh, sebelum Anda menerapkan pembaruan KB 2998527, kode ini dengan benar kembali tanggal dan waktu sebagai 1 Juni 2013 pada 04:00. Setelah Anda menerapkan pembaruan ini, kode yang salah kembali tanggal dan waktu sebagai 1 Juni 2013 03:00.
perbaikan terbaru

Peringatan: Artikel ini telah diterjemahkan secara otomatis

Properti

ID Artikel: 3012229 - Tinjauan Terakhir: 06/20/2016 06:24:00 - Revisi: 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, Microsoft .NET Framework 3.5, .NET Core 5.0

  • kbmt KB3012229 KbMtid
Tanggapan