Rumah > Java > javaTutorial > teks badan

Mengapa kod Java saya menunjukkan masa yang salah apabila menukar kepada zon waktu tertentu dan bagaimana saya boleh membetulkannya?

Linda Hamilton
Lepaskan: 2024-10-29 14:53:02
asal
193 orang telah melayarinya

Why is my Java code showing an incorrect time when converting to a specific timezone, and how can I fix it?

Penukaran Tarikh dan Masa kepada Zon Waktu Tertentu di Jawa

Dalam percubaan untuk menukar tarikh dan masa sistem semasa kepada zon waktu tertentu, anda mengalami percanggahan antara output yang dijangkakan dan masa sebenar dalam zon waktu yang dikehendaki. Untuk menangani isu ini, kami akan menyelidiki kod yang anda berikan dan mengenal pasti kemungkinan punca perbezaan masa.

Kod menggunakan kelas Kalendar dan SimpleDateFormat untuk mengendalikan operasi tarikh dan masa. Anda menetapkan masa semasa untuk mengemas kini dan memformatkannya sebagai rentetan menggunakan objek pemformat. Kemudian, anda mencipta objek Zon Waktu untuk zon waktu sasaran (CST dalam kes anda) dan menetapkannya sebagai zon waktu untuk pemformat. Akhir sekali, anda menghuraikan rentetan tarikh yang diformatkan untuk mendapatkan tarikh yang terhasil dalam zon waktu yang ditentukan.

Percanggahan timbul kerana pemformat memformat tarikh dalam zon waktu setempat sebelum menukarkannya kepada zon waktu sasaran. Untuk mengambil kira perkara ini, anda mesti melaraskan masa secara eksplisit dengan menambah atau menolak perbezaan offset antara zon waktu tempatan dan zon waktu sasaran.

Berikut ialah coretan kod dikemas kini yang sepatutnya memberikan penukaran masa yang betul:

<code class="java">// Create a calendar and set it to the local timezone
Calendar calendar = Calendar.getInstance();
TimeZone fromTimeZone = calendar.getTimeZone();

// Create a calendar for the target timezone
TimeZone toTimeZone = TimeZone.getTimeZone("CST");

// Convert the current time to the local timezone
calendar.setTimeZone(fromTimeZone);
calendar.add(Calendar.MILLISECOND, fromTimeZone.getRawOffset() * -1);
if (fromTimeZone.inDaylightTime(calendar.getTime())) {
    calendar.add(Calendar.MILLISECOND, calendar.getTimeZone().getDSTSavings() * -1);
}

// Convert the time to the target timezone
calendar.add(Calendar.MILLISECOND, toTimeZone.getRawOffset());
if (toTimeZone.inDaylightTime(calendar.getTime())) {
    calendar.add(Calendar.MILLISECOND, toTimeZone.getDSTSavings());
}

// Get the final date and time in the target timezone
Date theResult = calendar.getTime();

System.out.println("The current time in India is  :: " + currentdate.getTime());
System.out.println("The date and time in :: " + toTimeZone.getDisplayName() + " is ::" + theResult);</code>
Salin selepas log masuk

Dengan melaraskan masa mengikut offset zon waktu, anda kini harus mendapatkan tarikh dan masa yang betul dalam zon waktu yang ditentukan.

Atas ialah kandungan terperinci Mengapa kod Java saya menunjukkan masa yang salah apabila menukar kepada zon waktu tertentu dan bagaimana saya boleh membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!