Cara Mengendalikan Zon Waktu Kalendar Menggunakan Java
Soalan:
Anda mempunyai Cap Masa daripada aplikasi anda yang mungkin berasal dari mana-mana Zon Waktu. Walau bagaimanapun, data mesti dihantar ke WebService yang menganggap ia sentiasa dalam GMT. Anda perlu menukar masa input pengguna daripada Zon Waktu setempat mereka kepada GMT tanpa pengetahuan mereka.
Jawapan:
Pengendalian Zon Waktu Java boleh mengelirukan. Walaupun Cap Masa biasanya disimpan dalam GMT, kelas Kalendar menggunakan Zon Waktu semasa sistem secara lalai. Untuk menangani cabaran ini, pertimbangkan perkara berikut:
import java.util.Calendar; import java.util.TimeZone; public class ConvertTimeZone { public static void main(String[] args) { // Example input time (EST) Calendar input = Calendar.getInstance(TimeZone.getTimeZone("EST")); input.set(2008, Calendar.MAY, 1, 18, 12, 0); // Create a Calendar in GMT Calendar gmt = convertToGmt(input); // Output the converted time (GMT) System.out.println(gmt.getTime()); // 2008-05-01 11:12:00 GMT } public static Calendar convertToGmt(Calendar cal) { Date date = cal.getTime(); TimeZone tz = cal.getTimeZone(); long msFromEpochGmt = date.getTime(); // Convert to milliseconds since epoch in GMT int offsetFromUTC = tz.getOffset(msFromEpochGmt); // Create a new Calendar in GMT and adjust for the offset Calendar gmtCal = Calendar.getInstance(TimeZone.getTimeZone("GMT")); gmtCal.setTime(date); gmtCal.add(Calendar.MILLISECOND, offsetFromUTC); return gmtCal; } }
Kod ini mengambil langkah berikut:
Dengan menggunakan pendekatan ini, anda boleh menukar masa input pengguna dengan tepat daripada mana-mana Zon Waktu kepada GMT, memastikan keserasian data dengan WebService.
Atas ialah kandungan terperinci Bagaimana untuk Menukar Cap Waktu Dari Mana-mana Zon Waktu ke GMT di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!