Menu
CoddyTech

Formatowanie dat

Część sekcji Logika i przepływ sterowania ścieżki Java w Coddy. Lekcja 58 z 59.

DateTimeFormatter w Javie pozwala formatować daty i godziny według różnych wzorców. Można go używać z LocalDate, LocalTime i LocalDateTime.

Utwórz formater z określonym wzorcem:

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

Sformatuj datę za pomocą formatera:

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

Po wykonaniu powyższego kodu formatted zawiera:

2024-03-15

Przekształć ciąg znaków w datę:

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

Oba kroki mogą się nie powieść. DateTimeFormatter.ofPattern() zgłasza wyjątek IllegalArgumentException, gdy sam wzorzec jest nieprawidłowy, na przykład ofPattern("invalid"), ponieważ i nie jest literą wzorca. LocalDate.parse() zgłasza wyjątek DateTimeParseException, gdy tekst nie pasuje do wzorca lub nie przedstawia rzeczywistej daty, na przykład "2024-13-45". IllegalArgumentException znajduje się w java.lang, więc nie wymaga importu:

try {
    DateTimeFormatter f = DateTimeFormatter.ofPattern(pattern);
    LocalDate d = LocalDate.parse(text, f);
} catch (DateTimeParseException e) {
    // tekst nie pasuje do wzorca
} catch (IllegalArgumentException e) {
    // wzorzec jest nieprawidłowy
}
challenge icon

Wyzwanie

Łatwy

Utwórz metodę o nazwie formatDate, która przyjmuje trzy argumenty:

  1. String (dateStr): data zapisana według wzorca wejściowego
  2. String (inputPattern): wzorzec daty wejściowej
  3. String (outputPattern): żądany wzorzec wyjściowy

Metoda powinna:

  1. Parsować datę wejściową przy użyciu wzorca wejściowego
  2. Sformatować ją przy użyciu wzorca wyjściowego
  3. Obsługiwać te wzorce:
    • "basic": "yyyy-MM-dd"
    • "long": "MMMM d, yyyy"
    • "short": "MM/dd/yy"
    • "custom": Rzeczywisty ciąg wzorca

Zwracane komunikaty powinny być następujące:

  • Jeśli data jest nieprawidłowa: zwróć "Invalid date format"
  • Jeśli wzorzec jest nieprawidłowy: zwróć "Invalid pattern"
  • W przypadku powodzenia: zwróć sformatowaną datę

Spróbuj swoich sił

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) {
        // Wpisz tutaj swój kod
    }
    
    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 iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ sterowania

Poćwicz samodzielnie: Kompilator Java online