Cara Menukar Zon Masa Menggunakan Cap Masa Java
Dalam senario ini, anda mempunyai cap masa dalam zon waktu EST dan perlu menukarnya kepada GMT untuk panggilan perkhidmatan web. Berikut ialah penjelasan terperinci:
Menukar daripada EST kepada GMT
Masalah timbul kerana nilai cap masa pada mulanya diandaikan dalam GMT, tetapi sebenarnya mungkin dalam zon waktu tempatan yang berbeza (EST dalam kes ini). Untuk menukar parameter pengguna daripada EST kepada GMT, anda perlu mengambil kira perbezaan masa antara dua zon waktu.
Menggunakan Kelas Kalendar
Anda sedang menggunakan kelas Kalendar untuk memanipulasi cap masa. Walau bagaimanapun, anda harus sedar bahawa kelas Kalendar sentiasa berfungsi dalam milisaat sejak zaman itu, tanpa mengira zon waktu yang anda tentukan. Ini bermakna apabila anda membuat Kalendar daripada Cap Masa menggunakan Calendar.getInstance(GMT_TIMEZONE), tarikh asas tidak dilaraskan untuk sepadan dengan zon waktu GMT.
Penyelesaian: Melaraskan untuk Offset Zon Masa
Untuk menukar cap masa kepada GMT dengan tepat, anda perlu mengambil kira zon waktu mengimbangi. Coretan kod berikut menyediakan penyelesaian:
public static Calendar convertToGmt(Calendar cal) { Date date = cal.getTime(); TimeZone tz = cal.getTimeZone(); // Compute milliseconds since epoch in GMT long msFromEpochGmt = date.getTime(); // Get offset from UTC in milliseconds at the given time int offsetFromUTC = tz.getOffset(msFromEpochGmt); // Create a new Calendar in GMT and adjust the date with the offset Calendar gmtCal = Calendar.getInstance(TimeZone.getTimeZone("GMT")); gmtCal.setTime(date); gmtCal.add(Calendar.MILLISECOND, offsetFromUTC); return gmtCal; }
Contoh Output
Jika anda melepasi masa semasa (dalam EDT) ke dalam kaedah convertToGmt, anda akan mendapat output berikut:
DEBUG - input calendar has date [Thu Oct 23 12:09:05 EDT 2008] DEBUG - offset is -14400000 DEBUG - Created GMT cal with date [Thu Oct 23 08:09:05 EDT 2008]
Ini menunjukkan bahawa 12:09:05 EDT telah berjaya ditukar kepada 08:09:05 GMT.
Atas ialah kandungan terperinci Bagaimana untuk Menukar Cap Waktu EST kepada GMT di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!