Masalah:
Menukar tarikh dan masa daripada satu zon waktu ke zon masa yang lain boleh mencabar di Jawa. Kod yang diberikan oleh pengguna untuk menukar masa semasa daripada GMT kepada GMT 13 nampaknya mudah, tetapi pendekatan yang sama gagal apabila menetapkan masa tertentu. Pengguna mempersoalkan mengapa zon waktu mesin tempatan digunakan dalam kes sedemikian.
Penyelesaian:
Kekeliruan timbul daripada fakta bahawa apabila mencipta objek Date baharu tanpa zon waktu yang jelas, masa diandaikan dalam UTC. Walau bagaimanapun, apabila menetapkan masa pada objek Kalendar menggunakan milisaat (seperti dalam calendar.setTime(new Date(1317816735000L))), andaian ialah masa berada dalam zon waktu mesin hos.
Kepada mengatasi ini, anda boleh menetapkan zon waktu secara eksplisit untuk objek SimpleDateFormat sebelum memformatkan masa:
import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.TimeZone; Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date(1317816735000L)); SimpleDateFormat sdf = new SimpleDateFormat("dd MMM yyyy HH:mm:ss z"); // Set the time zone for the formatter sdf.setTimeZone(TimeZone.getTimeZone("GMT+13")); // Format the time with the specified time zone String newZealandTime = sdf.format(calendar.getTime());
Kod ini akan mengembalikan tarikh dalam zon waktu yang ditentukan (GMT 13) sebagai rentetan.
Langkah untuk Penukaran Tarikh/Masa Tersuai:
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Objek Tarikh/Masa Java Antara Zon Masa dengan Tepat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!