Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Menukar Objek Tarikh/Masa Java Antara Zon Masa dengan Tepat?

Bagaimanakah Saya Boleh Menukar Objek Tarikh/Masa Java Antara Zon Masa dengan Tepat?

DDD
DDDasal
2024-11-28 11:14:15639semak imbas

How Can I Accurately Convert Java Date/Time Objects Between Time Zones?

Penukaran Tarikh/Masa kepada Zon Waktu Tertentu di Jawa

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:

  1. Buat objek Kalendar dan tetapkan masa dan tarikh.
  2. Nyatakan zon waktu awal menggunakan sdf.setTimeZone(TimeZone.getTimeZone("GMT")).
  3. Formatkan masa menggunakan sdf.format(calendar.getTime()).
  4. Tetapkan masa yang diingini zon ke objek SimpleDateFormat menggunakan sdf.setTimeZone(TimeZone.getTimeZone("GMT 13")).
  5. Formatkan semula masa menggunakan zon waktu baharu untuk mendapatkan nilai yang ditukar.

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!

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