Manejo de zonas horarias
Parte de la sección Lógica y Flujo del Journey de Java de Coddy — lección 59 de 59.
ZonedDateTime en Java representa una fecha y hora con una zona horaria. Es útil al trabajar con diferentes zonas horarias o al convertir entre ellas.
Crear una fecha y hora en una zona horaria específica:
ZonedDateTime tokyo = ZonedDateTime.now(ZoneId.of("Asia/Tokyo"));También puedes convertir un LocalDateTime a un ZonedDateTime usando .atZone():
LocalDateTime local = LocalDateTime.of(2024, 3, 15, 10, 30);
ZonedDateTime tokyo = local.atZone(ZoneId.of("Asia/Tokyo"));.atZone() adjunta una zona horaria a una fecha-hora local existente, produciendo un ZonedDateTime.
Convertir tiempo entre zonas:
ZonedDateTime newYork = tokyo.withZoneSameInstant(ZoneId.of("America/New_York"));Después de ejecutar el código anterior, newYork contiene el mismo instante que tokyo pero en la zona horaria de Nueva York:
2024-03-15T10:30-04:00[America/New_York]
// Example outputPara formatear un ZonedDateTime, use DateTimeFormatter. La letra de patrón Z o xxx formatea el desplazamiento UTC (p. ej. +09:00), y VV formatea el ID de zona (p. ej. Asia/Tokyo):
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm xxx");
String formatted = tokyo.format(formatter);
// Example: 2024-03-15 10:30 +09:00Desafío
FácilCrea un método llamado convertTime que tome cuatro argumentos:
- Una String (
dateTimeStr) en formato "yyyy-MM-dd HH:mm" - Una String (
sourceZone) ID de zona horaria de origen - Una String (
targetZone) ID de zona horaria de destino - Un boolean (
showOffset) si incluir el desplazamiento de zona horaria en la salida
El método debe:
- Analizar la fecha y hora de entrada en la zona horaria de origen
- Convertirla a la zona horaria de destino
- Devolver información formateada sobre ambas horas
Los mensajes de retorno deben ser:
- Si la fecha y hora es inválida: devolver "Invalid datetime format"
- Si la zona es inválida: devolver "Invalid time zone"
- Si showOffset es true: incluir el desplazamiento en la salida
- Formato: "Source: [time1], Target: [time2]"
Hoja de referencia
ZonedDateTime representa una fecha y hora con una zona horaria, útil para trabajar con diferentes zonas horarias.
Crear una hora en una zona específica:
ZonedDateTime tokyo = ZonedDateTime.now(ZoneId.of("Asia/Tokyo"));Convertir un LocalDateTime a un ZonedDateTime usando .atZone():
LocalDateTime local = LocalDateTime.now();
ZonedDateTime zoned = local.atZone(ZoneId.of("Asia/Tokyo"));Convertir la hora entre zonas:
ZonedDateTime newYork = tokyo.withZoneSameInstant(ZoneId.of("America/New_York"));Formatear un ZonedDateTime incluyendo el desplazamiento UTC usando patrones Z o xxx:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm xxx");
String formatted = zoned.format(formatter);
// Example: 2024-03-15 10:30 +09:00Pruébalo tú mismo
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) {
// Escribe tu código aquí
}
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));
}
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Arreglos Multidimensionales
Básicos de Arreglos 2DAccediendo a Elementos de Arreglos 2DBucles Anidados con Arreglos 2DResumen - Arreglos 2DSuma y Resta de MatricesArreglos IrregularesArreglos 3D y Más AlláPatrones Comunes de Arreglos 2DResumen - Todo Sobre Arreglos4HashSet Parte 1
¿Qué es un HashSet?Agregando un elementoEliminando un elementoComprobando si existe un elementoVacío y tamañoLimpiar y clonarResumen - HashSet7Manejo Básico de Errores
Básicos de Try-CatchBloque FinallyLanzamiento de ExcepcionesExcepciones Personalizadas10Fecha y Hora
Fundamentos de LocalDateOperaciones con LocalTimeUso de LocalDateTimePeriod y DurationFormato de fechasManejo de zonas horarias2HashMap Parte 1
¿Qué es un HashMap?Declarar un HashMapAcceder a ValoresVerificar si una Clave ExisteModificar DiccionariosResumen - HashMap3HashMap Parte 2
Métodos de HashMapIterar con keySet()Iterar con entrySet()HashMap AnidadoResumen - Gestionar AlmacénResumen - Operaciones de HashMap6Flujo de Control Avanzado
Sentencias EtiquetadasExpresión SwitchCoincidencia de PatronesCláusulas de GuardiaResumen - Flujo de Control9Proyecto - Contador de Palabras Únicas
Entrada y Almacenamiento de TextoProcesamiento de Palabras