Menu
CoddyTech

Formatação de Data

Parte da seção Lógica e Fluxo do Journey de Java da Coddy. Lição 58 de 59.

O DateTimeFormatter em Java permite formatar datas e horários em diferentes padrões. Ele pode ser usado com LocalDate, LocalTime e LocalDateTime.

Crie um formatador com um padrão específico:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");

Formate uma data usando o formatador:

LocalDate date = LocalDate.of(2024, 3, 15);
String formatted = date.format(formatter);

Após executar o código acima, formatted contém:

2024-03-15

Converta uma string em uma data:

String dateStr = "2024-03-15";
LocalDate date = LocalDate.parse(dateStr, formatter);

Ambas as etapas podem falhar. DateTimeFormatter.ofPattern() lança uma IllegalArgumentException quando o próprio padrão é inválido, por exemplo ofPattern("invalid"), porque i não é uma letra de padrão. LocalDate.parse() lança uma DateTimeParseException quando o texto não corresponde ao padrão ou não é uma data válida, por exemplo "2024-13-45". IllegalArgumentException fica em java.lang, então não precisa de importação:

try {
    DateTimeFormatter f = DateTimeFormatter.ofPattern(pattern);
    LocalDate d = LocalDate.parse(text, f);
} catch (DateTimeParseException e) {
    // o texto não corresponde ao padrão
} catch (IllegalArgumentException e) {
    // o padrão é inválido
}
challenge icon

Desafio

Fácil

Crie um método chamado formatDate que receba três argumentos:

  1. Uma String (dateStr): a data, escrita no padrão de entrada
  2. Uma String (inputPattern): o padrão da data de entrada
  3. Uma String (outputPattern): o padrão de saída desejado

O método deve:

  1. Analisar a data de entrada usando o padrão de entrada
  2. Formatá-la usando o padrão de saída
  3. Lidar com estes padrões:
    • "basic": "yyyy-MM-dd"
    • "long": "MMMM d, yyyy"
    • "short": "MM/dd/yy"
    • "custom": A string do padrão propriamente dita

As mensagens de retorno devem ser:

  • Se a data for inválida: retornar "Invalid date format"
  • Se o padrão for inválido: retornar "Invalid pattern"
  • Em caso de sucesso: retornar a data formatada

Experimente você mesmo

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) {
        // Escreva seu código aqui
    }
    
    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 iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica e Fluxo

Pratique por conta própria: Compilador de Java online