Heim >Java >javaLernprogramm >Wie kann ich Java-Datums-/Uhrzeitobjekte genau zwischen Zeitzonen konvertieren?

Wie kann ich Java-Datums-/Uhrzeitobjekte genau zwischen Zeitzonen konvertieren?

DDD
DDDOriginal
2024-11-28 11:14:15665Durchsuche

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

Konvertierung von Datum/Uhrzeit in eine bestimmte Zeitzone in Java

Problem:

Konvertierung eines Datums und einer Uhrzeit von Die Umstellung von einer Zeitzone auf eine andere kann in Java eine Herausforderung sein. Der vom Benutzer bereitgestellte Code zum Konvertieren der aktuellen Zeit von GMT in GMT 13 scheint unkompliziert zu sein, aber der gleiche Ansatz schlägt fehl, wenn eine bestimmte Zeit eingestellt wird. Der Benutzer fragt sich, warum in solchen Fällen die Zeitzone der lokalen Maschine verwendet wird.

Lösung:

Die Verwirrung entsteht durch die Tatsache, dass beim Erstellen eines neuen Date-Objekts ohne eine Wenn Sie eine explizite Zeitzone angeben, wird davon ausgegangen, dass die Zeit in UTC angegeben ist. Wenn Sie jedoch die Zeit für ein Kalenderobjekt mithilfe von Millisekunden festlegen (wie in Calendar.setTime(new Date(1317816735000L))), wird davon ausgegangen, dass die Zeit in der Zeitzone des Hostcomputers liegt.

Zu Um dies zu umgehen, können Sie die Zeitzone für das SimpleDateFormat-Objekt explizit festlegen, bevor Sie die Uhrzeit formatieren:

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());

Dieser Code gibt das Datum im zurück angegebene Zeitzone (GMT 13) als Zeichenfolge.

Schritte für die benutzerdefinierte Datums-/Uhrzeitkonvertierung:

  1. Erstellen Sie ein Kalenderobjekt und legen Sie Uhrzeit und Datum fest .
  2. Geben Sie die anfängliche Zeitzone an mit sdf.setTimeZone(TimeZone.getTimeZone("GMT")).
  3. Formatieren Sie die Zeit mit sdf.format(calendar.getTime()).
  4. Setzen Sie die gewünschte Zeitzone auf das SimpleDateFormat-Objekt mit sdf.setTimeZone(TimeZone.getTimeZone("GMT 13")).
  5. Neuformatieren die Zeit unter Verwendung der neuen Zeitzone, um den konvertierten Wert zu erhalten.

Das obige ist der detaillierte Inhalt vonWie kann ich Java-Datums-/Uhrzeitobjekte genau zwischen Zeitzonen konvertieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn