Heim >Java >javaLernprogramm >Warum konvertiert mein Java-Code Datum und Uhrzeit falsch in CST und wie kann ich das beheben?
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:
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!