Rumah >Java >javaTutorial >Mengapa SimpleDateFormat('yyyy-MM-dd'T'HH:mm:ss'Z'') Menunjukkan IST dan bukannya UTC?
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'") Memaparkan Zon Waktu sebagai IST
The SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'") direka bentuk untuk menghuraikan rentetan tarikh dalam Format ISO-8601. Walau bagaimanapun, akhiran 'Z' sahaja tidak menetapkan zon waktu untuk tarikh yang dihuraikan.
Isu anda timbul apabila anda menggunakan format ini untuk menghuraikan rentetan tarikh seperti "2013-09-29T18:46:19Z". Memandangkan 'Z' mewakili masa Zulu (UTC), anda mungkin menjangkakan tarikh yang dihuraikan akan dipaparkan sebagai UTC. Walau bagaimanapun, anda menghadapi zon waktu IST (Waktu Piawai India) yang dipaparkan.
Memahami Isu
Kuncinya di sini ialah anda belum menetapkan secara eksplisit zon waktu untuk objek SimpleDateFormat. Akibatnya, ia lalai kepada zon waktu lalai JVM, yang berkemungkinan IST dalam kes anda. Jadi, sementara rentetan tarikh menggunakan akhiran 'Z' untuk menunjukkan UTC, objek SimpleDateFormat menghuraikannya dalam IST.
Menyelesaikan Isu
Untuk menyelesaikan masalah ini dan pastikan tarikh yang dihuraikan dipaparkan dalam UTC, tetapkan zon waktu untuk SimpleDateFormat secara eksplisit kepada GMT menggunakan:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
Dengan menetapkan zon waktu kepada GMT, anda memberitahu SimpleDateFormat untuk menghuraikan rentetan tarikh dalam UTC, walaupun ia mempunyai akhiran 'Z'. Ini menjamin tarikh yang dihuraikan dipaparkan dengan betul dalam UTC.
Atas ialah kandungan terperinci Mengapa SimpleDateFormat('yyyy-MM-dd'T'HH:mm:ss'Z'') Menunjukkan IST dan bukannya UTC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!