Rumah >Java >javaTutorial >Bagaimana untuk Menukar Cap Waktu EST kepada GMT di Jawa?

Bagaimana untuk Menukar Cap Waktu EST kepada GMT di Jawa?

Barbara Streisand
Barbara Streisandasal
2024-11-12 16:36:02822semak imbas

How to Convert EST Timestamps to GMT in Java?

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!

Kenyataan:
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