Menu
CoddyTech

Formattazione delle date

Fa parte della sezione Logica e flusso del percorso Java di Coddy. Lezione 58 di 59.

DateTimeFormatter in Java ti permette di formattare date e orari secondo diversi schemi. Può essere usato con LocalDate, LocalTime e LocalDateTime.

Crea un formattatore con un modello specifico:

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

Formatta una data usando il formattatore:

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

Dopo aver eseguito il codice precedente, formatted contiene:

2024-03-15

Analizza una stringa in una data:

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

Entrambi i passaggi possono fallire. DateTimeFormatter.ofPattern() genera un'IllegalArgumentException quando il formato stesso non è valido, per esempio ofPattern("invalid"), perché i non è una lettera di formato. LocalDate.parse() genera una DateTimeParseException quando il testo non corrisponde al formato o non rappresenta una data reale, per esempio "2024-13-45". IllegalArgumentException si trova in java.lang, quindi non richiede alcuna importazione:

try {
    DateTimeFormatter f = DateTimeFormatter.ofPattern(pattern);
    LocalDate d = LocalDate.parse(text, f);
} catch (DateTimeParseException e) {
    // il testo non corrisponde al formato
} catch (IllegalArgumentException e) {
    // il formato non è valido
}
challenge icon

Sfida

Facile

Crea un metodo denominato formatDate che accetti tre argomenti:

  1. Una String (dateStr): la data, scritta nel formato di input
  2. Una String (inputPattern) il formato della data di input
  3. Una String (outputPattern) il formato di output desiderato

Il metodo dovrebbe:

  1. Analizzare la data di input utilizzando il formato di input
  2. Formattarla utilizzando il formato di output
  3. Gestire questi formati:
    • "basic": "yyyy-MM-dd"
    • "long": "MMMM d, yyyy"
    • "short": "MM/dd/yy"
    • "custom": La stringa del formato effettivo

I messaggi restituiti dovrebbero essere:

  • Se la data non è valida: restituire "Invalid date format"
  • Se il formato non è valido: restituire "Invalid pattern"
  • In caso di successo: restituire la data formattata

Provalo tu

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) {
        // Scrivi il tuo codice qui
    }
    
    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 iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Java online