Formato de fechas
Parte de la sección Lógica y Flujo del Journey de Java de Coddy. Lección 58 de 59.
DateTimeFormatter en Java te permite dar formato a fechas y horas con distintos patrones. Se puede usar con LocalDate, LocalTime y LocalDateTime.
Crea un formateador con un patrón específico:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");Formatea una fecha usando el formateador:
LocalDate date = LocalDate.of(2024, 3, 15);
String formatted = date.format(formatter);Después de ejecutar el código anterior, formatted contiene:
2024-03-15
Analiza una cadena para convertirla en una fecha:
String dateStr = "2024-03-15";
LocalDate date = LocalDate.parse(dateStr, formatter);Ambos pasos pueden fallar. DateTimeFormatter.ofPattern() lanza una IllegalArgumentException cuando el patrón en sí no es válido, por ejemplo ofPattern("invalid"), porque i no es una letra de patrón. LocalDate.parse() lanza una DateTimeParseException cuando el texto no coincide con el patrón o no representa una fecha real, por ejemplo "2024-13-45". IllegalArgumentException está en java.lang, así que no necesita importación:
try {
DateTimeFormatter f = DateTimeFormatter.ofPattern(pattern);
LocalDate d = LocalDate.parse(text, f);
} catch (DateTimeParseException e) {
// el texto no coincide con el patrón
} catch (IllegalArgumentException e) {
// el patrón no es válido
}Desafío
FácilCrea un método llamado formatDate que tome tres argumentos:
- Un String (
dateStr): la fecha, escrita con el patrón de entrada - Un String (
inputPattern): el patrón de la fecha de entrada - Un String (
outputPattern): el patrón de salida deseado
El método debe:
- Analizar la fecha de entrada usando el patrón de entrada
- Dar formato usando el patrón de salida
- Manejar estos patrones:
- "basic": "yyyy-MM-dd"
- "long": "MMMM d, yyyy"
- "short": "MM/dd/yy"
- "custom": La cadena del patrón real
Los mensajes devueltos deben ser:
- Si la fecha no es válida: devolver "Invalid date format"
- Si el patrón no es válido: devolver "Invalid pattern"
- Si la operación se realiza correctamente: devolver la fecha con formato
Pruébalo tú mismo
import java.util.Scanner;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
public class Main {
public static String formatDate(String dateStr, String inputPattern, String outputPattern) {
// Escribe tu código aquí
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String dateStr = scanner.nextLine();
String inputPattern = scanner.nextLine();
String outputPattern = scanner.nextLine();
System.out.println(formatDate(dateStr, inputPattern, outputPattern));
}
}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 PalabrasPractica por tu cuenta: Compilador de Java online