Heim > Java > javaLernprogramm > Warum zeigt mein Java-Code beim Konvertieren in eine bestimmte Zeitzone eine falsche Uhrzeit an und wie kann ich das beheben?

Warum zeigt mein Java-Code beim Konvertieren in eine bestimmte Zeitzone eine falsche Uhrzeit an und wie kann ich das beheben?

Linda Hamilton
Freigeben: 2024-10-29 14:53:02
Original
378 Leute haben es durchsucht

Why is my Java code showing an incorrect time when converting to a specific timezone, and how can I fix it?

Datums- und Uhrzeitkonvertierung in eine bestimmte Zeitzone in Java

Beim Versuch, das aktuelle Systemdatum und die aktuelle Systemzeit in eine bestimmte Zeitzone umzuwandeln, haben Sie Es ist eine Diskrepanz zwischen der erwarteten Ausgabe und der tatsächlichen Zeit in der gewünschten Zeitzone aufgetreten. Um dieses Problem zu beheben, werden wir uns mit dem von Ihnen bereitgestellten Code befassen und die möglichen Ursachen für den Zeitunterschied identifizieren.

Der Code verwendet die Klassen Calendar und SimpleDateFormat, um Datums- und Uhrzeitoperationen zu verarbeiten. Sie legen die aktuelle Uhrzeit auf „aktuelles Datum“ fest und formatieren sie mithilfe des Formatierungsobjekts als Zeichenfolge. Anschließend erstellen Sie ein TimeZone-Objekt für die Zielzeitzone (in Ihrem Fall CST) und legen es als Zeitzone für den Formatierer fest. Abschließend analysieren Sie die formatierte Datumszeichenfolge, um das resultierende Datum in der angegebenen Zeitzone zu erhalten.

Die Diskrepanz entsteht, weil der Formatierer das Datum in der lokalen Zeitzone formatiert, bevor es in die Zielzeitzone konvertiert wird. Um dies zu berücksichtigen, müssen Sie die Zeit explizit anpassen, indem Sie die Offset-Differenz zwischen der lokalen Zeitzone und der Zielzeitzone addieren oder subtrahieren.

Hier ist ein aktualisierter Codeausschnitt, der die korrekte Zeitkonvertierung bereitstellen sollte:

<code class="java">// Create a calendar and set it to the local timezone
Calendar calendar = Calendar.getInstance();
TimeZone fromTimeZone = calendar.getTimeZone();

// Create a calendar for the target timezone
TimeZone toTimeZone = TimeZone.getTimeZone("CST");

// Convert the current time to the local timezone
calendar.setTimeZone(fromTimeZone);
calendar.add(Calendar.MILLISECOND, fromTimeZone.getRawOffset() * -1);
if (fromTimeZone.inDaylightTime(calendar.getTime())) {
    calendar.add(Calendar.MILLISECOND, calendar.getTimeZone().getDSTSavings() * -1);
}

// Convert the time to the target timezone
calendar.add(Calendar.MILLISECOND, toTimeZone.getRawOffset());
if (toTimeZone.inDaylightTime(calendar.getTime())) {
    calendar.add(Calendar.MILLISECOND, toTimeZone.getDSTSavings());
}

// Get the final date and time in the target timezone
Date theResult = calendar.getTime();

System.out.println("The current time in India is  :: " + currentdate.getTime());
System.out.println("The date and time in :: " + toTimeZone.getDisplayName() + " is ::" + theResult);</code>
Nach dem Login kopieren

Durch Anpassen der Uhrzeit entsprechend den Zeitzonen-Offsets sollten Sie nun das richtige Datum und die richtige Uhrzeit in der angegebenen Zeitzone erhalten.

Das obige ist der detaillierte Inhalt vonWarum zeigt mein Java-Code beim Konvertieren in eine bestimmte Zeitzone eine falsche Uhrzeit an und wie kann ich das beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage