Heim  >  Artikel  >  Java  >  Warum konvertiert mein Java-Code Datum und Uhrzeit falsch in CST und wie kann ich das beheben?

Warum konvertiert mein Java-Code Datum und Uhrzeit falsch in CST und wie kann ich das beheben?

Linda Hamilton
Linda HamiltonOriginal
2024-10-26 22:09:29489Durchsuche

Why is my Java code converting date and time to CST incorrectly, and how can I fix it?

Konvertieren von Datum und Uhrzeit in eine bestimmte Zeitzone in Java

Dieses Java-Programm zielt darauf ab, das aktuelle Systemdatum und die aktuelle Systemzeit in eine bestimmte Zeitzone zu konvertieren . Der bereitgestellte Code liefert jedoch falsche Ergebnisse und zeigt eine Zeitdiskrepanz bei der Konvertierung von Indien in die Central Standard Time (CST).

Informationen zur Zeitzonenkonvertierung

Zeitzonen sind regionale Gebiete die die gleiche Standardzeit verwenden. Wenn Sie die entsprechende Zeit in einer anderen Zeitzone berechnen, müssen Sie den Unterschied in den Zeitzonenversätzen und Sommerzeiteinstellungen (DST) berücksichtigen.

Analyse des Codes

Die Code basiert auf den Klassen SimpleDateFormat und Calendar, um Datums- und Uhrzeitwerte zu manipulieren. Es versucht, die aktuelle Systemzeit mithilfe der folgenden Schritte in CST umzuwandeln:

  1. Ruft das aktuelle Datum und die aktuelle Uhrzeit mithilfe des Kalenders ab.
  2. Parst das Datum und die Uhrzeit mithilfe von SimpleDateFormat in einen String.
  3. Erhält die CST-Zeitzone mithilfe von TimeZone und legt sie als Zeitzone für das SimpleDateFormat-Objekt fest.
  4. Parst die Datums- und Uhrzeitzeichenfolge mithilfe der CST-Zeitzone.
  5. Druckt das konvertierte Datum und Zeit.

Behebung der Diskrepanz

Die Diskrepanz entsteht, weil der Code den Zeitzonenversatz und die Sommerzeiteinstellungen nicht richtig anpasst. Der bereitgestellte Code passt sich nur an den Rohzeitzonenversatz an, berücksichtigt jedoch nicht die Sommerzeit.

Lösung

Um dieses Problem zu beheben, sollte der Code an beide Rohzeitzonen angepasst werden Offset- und DST-Einsparungen. Der folgende korrigierte Code demonstriert die Anpassungen:

<code class="java">Calendar calendar = Calendar.getInstance();
TimeZone fromTimeZone = calendar.getTimeZone();
TimeZone toTimeZone = TimeZone.getTimeZone("CST");

// Adjust for raw time zone offset
calendar.add(Calendar.MILLISECOND, fromTimeZone.getRawOffset() * -1);

// Adjust for daylight saving time
if (fromTimeZone.inDaylightTime(calendar.getTime())) {
    calendar.add(Calendar.MILLISECOND, calendar.getTimeZone().getDSTSavings() * -1);
}

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

System.out.println(calendar.getTime());</code>

Durch das Hinzufügen dieser Anpassungen konvertiert der Code Datum und Uhrzeit genau in die angegebene Zeitzone, einschließlich Sommerzeitanpassungen.

Das obige ist der detaillierte Inhalt vonWarum konvertiert mein Java-Code Datum und Uhrzeit falsch in CST und wie kann ich das beheben?. 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