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>
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!