Zeitzonenbehandlung
Teil des Abschnitts Logik & Ablauf der Java-Journey von Coddy. Lektion 59 von 59.
ZonedDateTime in Java stellt ein Datum und eine Uhrzeit mit einer Zeitzone dar. Es ist nützlich, wenn du mit verschiedenen Zeitzonen arbeitest oder zwischen ihnen umrechnest.
Erstellen Sie eine Zeit in einer bestimmten Zeitzone:
ZonedDateTime tokyo = ZonedDateTime.now(ZoneId.of("Asia/Tokyo"));Sie können auch ein ZonedDateTime aus einem LocalDateTime mit .atZone() erstellen:
LocalDateTime localDT = LocalDateTime.of(2024, 3, 15, 10, 30);
ZonedDateTime tokyo = localDT.atZone(ZoneId.of("Asia/Tokyo"));Zeit zwischen Zeitzonen konvertieren:
ZonedDateTime newYork = tokyo.withZoneSameInstant(ZoneId.of("America/New_York"));Nach der Ausführung des obigen Codes enthält newYork denselben Zeitpunkt wie tokyo, aber in der Zeitzone von New York:
2024-03-15T10:30-04:00[America/New_York]
// Beispielhafte AusgabeUm ein ZonedDateTime zu formatieren, verwenden Sie DateTimeFormatter. Sie können den Zeitzonen-Offset in die Ausgabe aufnehmen, indem Sie den Musterbuchstaben Z oder XXX verwenden:
// Ohne Offset
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
// Mit Offset (z. B. +09:00 oder -04:00)
DateTimeFormatter fmtWithOffset = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm XXX");
String result = newYork.format(fmtWithOffset);
// Beispiel: 2024-03-15 10:30 -04:00Aufgabe
EinfachErstelle eine Methode namens convertTime, die vier Argumente entgegennimmt:
- Ein String (
dateTimeStr) im Format "yyyy-MM-dd HH:mm" - Ein String (
sourceZone) als ID der Quellzeitzone - Ein String (
targetZone) als ID der Zielzeitzone - Ein boolescher Wert (
showOffset), der angibt, ob der Zeitzonenoffset in die Ausgabe aufgenommen werden soll
Die Methode sollte:
- Die Eingabedatum und -zeit in der Quellzeitzone analysieren
- Sie in die Zielzeitzone konvertieren
- Formatierte Informationen zu beiden Zeitpunkten zurückgeben
Die zurückgegebenen Nachrichten sollten lauten:
- Bei ungültigem Datum und ungültiger Uhrzeit: "Invalid datetime format" zurückgeben
- Bei ungültiger Zeitzone: "Invalid time zone" zurückgeben
- Wenn showOffset true ist: den Offset in die Ausgabe aufnehmen
- Format: "Source: [time1], Target: [time2]"
Probier es selbst
import java.util.Scanner;
import java.time.*;
import java.time.format.*;
public class Main {
public static String convertTime(String dateTimeStr, String sourceZone,
String targetZone, boolean showOffset) {
// Schreibe deinen Code hier
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String dateTimeStr = scanner.nextLine();
String sourceZone = scanner.nextLine();
String targetZone = scanner.nextLine();
boolean showOffset = Boolean.parseBoolean(scanner.nextLine());
System.out.println(convertTime(dateTimeStr, sourceZone, targetZone, showOffset));
}
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Mehrdimensionale Arrays
Grundlagen der 2D-ArraysZugriff auf 2D-Array-ElementeVerschachtelte Schleifen mit 2D-ArraysZusammenfassung - 2D-ArraysMatrixaddition & SubtraktionJagged Arrays3D-Arrays und darüber hinausGängige 2D-Array-MusterZusammenfassung - Alles über Arrays4HashSet Teil 1
Was ist ein HashSet?Ein Element hinzufügenEin Element entfernenPrüfen, ob ein Element vorhanden istLeer und GrößeLeeren und KlonenZusammenfassung - HashSet10Datum und Zeit
LocalDate GrundlagenLocalTime OperationenLocalDateTime VerwendungPeriod und DurationDatumsformatierungZeitzonenbehandlung2HashMap Teil 1
Was ist eine HashMap?Eine HashMap deklarierenWerte abrufenPrüfen, ob ein Schlüssel existiertWörterbücher modifizierenZusammenfassung - HashMap3HashMap Teil 2
HashMap-MethodenMit keySet() iterierenMit entrySet() iterierenVerschachtelte HashMapZusammenfassung - Lager verwaltenZusammenfassung - HashMap-Operationen6Erweiterter Steuerungsfluss
Beschriftete AnweisungenSwitch-AusdruckMusterabgleichSchutzklauselnZusammenfassung - Steuerungsfluss9Projekt - Einzigartiger Wortzähler
Texteingabe und SpeicherungWortverarbeitungÜbe selbstständig: Online-Java-Compiler