Menukar Tarikh dan Masa kepada Zon Waktu Tertentu di Java
Program Java ini bertujuan untuk menukar tarikh dan masa sistem semasa kepada zon waktu tertentu . Walau bagaimanapun, kod yang diberikan menghasilkan hasil yang salah, menunjukkan percanggahan masa apabila menukar dari India kepada Waktu Standard Pusat (CST).
Memahami Penukaran Zon Waktu
Zon waktu ialah kawasan serantau yang menggunakan masa standard yang sama. Apabila mengira masa yang setara dalam zon waktu lain, anda mesti melaraskan perbezaan dalam pengimbangan zon waktu dan tetapan waktu penjimatan siang (DST).
Menganalisis Kod
The kod bergantung pada kelas SimpleDateFormat dan Kalendar untuk memanipulasi nilai tarikh dan masa. Ia cuba menukar masa sistem semasa kepada CST menggunakan langkah berikut:
Mengatasi Percanggahan
Percanggahan timbul kerana kod tidak melaraskan dengan betul untuk ofset zon waktu dan tetapan DST. Kod yang disediakan hanya melaraskan untuk mengimbangi zon waktu mentah tetapi tidak mengambil kira DST.
Penyelesaian
Untuk menangani isu ini, kod harus melaraskan untuk kedua-dua bahan mentah penjimatan offset dan DST. Kod yang diperbetulkan berikut menunjukkan pelarasan:
<code class="java">Calendar calendar = Calendar.getInstance(); TimeZone fromTimeZone = calendar.getTimeZone(); TimeZone toTimeZone = TimeZone.getTimeZone("CST"); // Adjust for raw time zone offset calendar.add(Calendar.MILLISECOND, fromTimeZone.getRawOffset() * -1); // Adjust for daylight saving time if (fromTimeZone.inDaylightTime(calendar.getTime())) { calendar.add(Calendar.MILLISECOND, calendar.getTimeZone().getDSTSavings() * -1); } // Adjust to target time zone calendar.add(Calendar.MILLISECOND, toTimeZone.getRawOffset()); if (toTimeZone.inDaylightTime(calendar.getTime())) { calendar.add(Calendar.MILLISECOND, toTimeZone.getDSTSavings()); } System.out.println(calendar.getTime());</code>
Dengan menambahkan pelarasan ini, kod akan menukar tarikh dan masa dengan tepat kepada zon waktu yang ditentukan, termasuk pelarasan DST.
Atas ialah kandungan terperinci Mengapakah kod Java saya menukar tarikh dan masa kepada CST secara tidak betul, dan bagaimanakah saya boleh membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!