Rumah  >  Artikel  >  Java  >  Mengapakah kod Java saya menukar tarikh dan masa kepada CST secara tidak betul, dan bagaimanakah saya boleh membetulkannya?

Mengapakah kod Java saya menukar tarikh dan masa kepada CST secara tidak betul, dan bagaimanakah saya boleh membetulkannya?

Linda Hamilton
Linda Hamiltonasal
2024-10-26 22:09:29489semak imbas

Why is my Java code converting date and time to CST incorrectly, and how can I fix it?

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:

  1. Mengambil tarikh dan masa semasa menggunakan Kalendar.
  2. Menghuraikan tarikh dan masa kepada String menggunakan SimpleDateFormat.
  3. Mendapatkan zon waktu CST menggunakan Zon Waktu dan menetapkannya sebagai zon waktu untuk objek SimpleDateFormat.
  4. Menghuraikan rentetan tarikh dan masa menggunakan zon waktu CST.
  5. Mencetak tarikh yang ditukar dan masa.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn