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
}Wyzwanie
ŁatwyUtwórz metodę o nazwie formatDate, która przyjmuje trzy argumenty:
- String (
dateStr): data zapisana według wzorca wejściowego - String (
inputPattern): wzorzec daty wejściowej - String (
outputPattern): żądany wzorzec wyjściowy
Metoda powinna:
- Parsować datę wejściową przy użyciu wzorca wejściowego
- Sformatować ją przy użyciu wzorca wyjściowego
- 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));
}
}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
1Tablice wielowymiarowe
Podstawy tablic 2DDostęp do elementów tablic 2DPętle zagnieżdżone z tablicami 2DPodsumowanie — tablice 2DDodawanie i odejmowanie macierzyTablice postrzępioneTablice 3D i większeTypowe wzorce dla tablic 2DPodsumowanie — wszystko o tablicach4HashSet — część 1
Czym jest HashSet?Dodawanie elementuUsuwanie elementuSprawdzanie, czy element istniejePusty i rozmiarCzyszczenie i klonowaniePodsumowanie — HashSet10Data i czas
Podstawy LocalDateOperacje na LocalTimeZastosowanie LocalDateTimePeriod i DurationFormatowanie datObsługa stref czasowych2HashMap część 1
Czym jest HashMap?Deklarowanie HashMapDostęp do wartościSprawdzanie, czy klucz istniejeModyfikowanie słownikówPodsumowanie — HashMap3HashMap — część 2
Metody HashMapIterowanie za pomocą keySet()Iterowanie za pomocą entrySet()Zagnieżdżona HashMapPowtórka — zarządzanie magazynemPowtórka — operacje na HashMap6Zaawansowany przepływ sterowania
Instrukcje etykietująceWyrażenie switchDopasowywanie wzorcówKlauzule ochronnePowtórzenie — przepływ sterowania9Projekt — licznik unikalnych słów
Wprowadzanie i przechowywanie tekstuPrzetwarzanie słówPoćwicz samodzielnie: Kompilator Java online