Gestione dei fusi orari
Fa parte della sezione Logica e flusso del percorso Java di Coddy. Lezione 59 di 59.
ZonedDateTime in Java rappresenta una data e un'ora con un fuso orario. È utile quando si lavora con fusi orari diversi o si eseguono conversioni tra di essi.
Crea un orario in una zona specifica:
ZonedDateTime tokyo = ZonedDateTime.now(ZoneId.of("Asia/Tokyo"));Puoi anche creare un ZonedDateTime da un LocalDateTime usando .atZone():
LocalDateTime localDT = LocalDateTime.of(2024, 3, 15, 10, 30);
ZonedDateTime tokyo = localDT.atZone(ZoneId.of("Asia/Tokyo"));Converti l'ora tra i fusi orari:
ZonedDateTime newYork = tokyo.withZoneSameInstant(ZoneId.of("America/New_York"));Dopo aver eseguito il codice precedente, newYork contiene lo stesso istante di tokyo, ma nel fuso orario di New York:
2024-03-15T10:30-04:00[America/New_York]
// Esempio di outputPer formattare un ZonedDateTime, usa DateTimeFormatter. Aggiungi l’offset con il pattern xxx: stampa +09:00 o -04:00 e un offset zero come +00:00 (il pattern maiuscolo XXX stampa invece Z per un offset zero):
// Senza offset
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
// Con offset (ad es. +09:00 o -04:00)
DateTimeFormatter fmtWithOffset = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm xxx");
String result = newYork.format(fmtWithOffset);
// Esempio: 2024-03-15 10:30 -04:00Sfida
FacileCrea un metodo chiamato convertTime che accetti quattro argomenti:
- Una String (
dateTimeStr) nel formato "yyyy-MM-dd HH:mm" - Una String (
sourceZone) ID del fuso orario di origine - Una String (
targetZone) ID del fuso orario di destinazione - Un boolean (
showOffset) che indica se includere l’offset del fuso orario nell’output
Il metodo dovrebbe:
- Analizzare la data e l’ora di input nel fuso orario di origine
- Convertirla nel fuso orario di destinazione
- Restituire informazioni formattate su entrambi gli orari
I messaggi restituiti dovrebbero essere:
- Se la data e l’ora non sono valide: restituisci "Invalid datetime format"
- Se il fuso non è valido: restituisci "Invalid time zone"
- Se showOffset è true: includi l’offset nell’output, formattato con il pattern
xxx, così un offset pari a zero viene visualizzato come+00:00 - Formato: "Source: [time1], Target: [time2]"
Provalo tu
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) {
// Scrivi il tuo codice qui
}
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));
}
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Array multidimensionali
Concetti di base degli array 2DAccesso agli elementi degli array 2DCicli annidati con array 2DRiepilogo - Array 2DAddizione e sottrazione di matriciArray irregolariArray 3D e oltreSchemi comuni degli array 2DRiepilogo - Tutto sugli array4HashSet Parte 1
Che cos'è un HashSet?Aggiungere un elementoRimuovere un elementoVerificare se un elemento esisteVuoto e dimensioneSvuotare e clonareRipasso - HashSet7Gestione di base degli errori
Nozioni di base su try-catchBlocco finallyLancio di eccezioniEccezioni personalizzate10Data e ora
Nozioni di base su LocalDateOperazioni con LocalTimeUtilizzo di LocalDateTimePeriod e DurationFormattazione delle dateGestione dei fusi orari2HashMap Parte 1
Che cos'è una HashMap?Dichiarare una HashMapAccedere ai valoriVerificare se una chiave esisteModificare i dizionariRiepilogo - HashMap3HashMap Parte 2
Metodi di HashMapIterare con keySet()Iterare con entrySet()HashMap annidateRiepilogo - Gestire il magazzinoRiepilogo - Operazioni con HashMap6Flusso di controllo avanzato
Istruzioni con etichettaEspressione switchCorrispondenza dei patternClausole guardiaRiepilogo - Flusso di controllo9Progetto - Contatore di parole uniche
Inserimento e memorizzazione del testoElaborazione delle paroleEsercitati da solo: Compilatore Java online