Menu
CoddyTech

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
}
challenge icon

Desafío

Fácil

Crea un método llamado formatDate que tome tres argumentos:

  1. Un String (dateStr): la fecha, escrita con el patrón de entrada
  2. Un String (inputPattern): el patrón de la fecha de entrada
  3. Un String (outputPattern): el patrón de salida deseado

El método debe:

  1. Analizar la fecha de entrada usando el patrón de entrada
  2. Dar formato usando el patrón de salida
  3. 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));
    }
}
quiz iconPonte a prueba

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

Practica por tu cuenta: Compilador de Java online