날짜 서식 지정
Coddy Java 여정의 논리와 흐름 섹션에 포함된 레슨. 59개 중 58번째.
Java의 DateTimeFormatter를 사용하면 날짜와 시간을 다양한 패턴으로 형식화할 수 있습니다. LocalDate, LocalTime, LocalDateTime과 함께 사용할 수 있습니다.
특정 패턴으로 포매터를 만듭니다:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");포맷터를 사용하여 날짜를 형식화합니다:
LocalDate date = LocalDate.of(2024, 3, 15);
String formatted = date.format(formatter);위 코드를 실행한 후, formatted에는 다음이 포함됩니다.
2024-03-15
문자열을 날짜로 파싱합니다:
String dateStr = "2024-03-15";
LocalDate date = LocalDate.parse(dateStr, formatter);두 단계 모두 실패할 수 있습니다. DateTimeFormatter.ofPattern()은 패턴 자체가 유효하지 않으면 IllegalArgumentException을 발생시킵니다. 예를 들어 ofPattern("invalid")의 경우 i는 패턴 문자가 아니기 때문입니다. LocalDate.parse()는 텍스트가 패턴과 일치하지 않거나 실제 날짜가 아니면 DateTimeParseException을 발생시킵니다. 예를 들어 "2024-13-45"가 그렇습니다. IllegalArgumentException은 java.lang에 있으므로 import할 필요가 없습니다:
try {
DateTimeFormatter f = DateTimeFormatter.ofPattern(pattern);
LocalDate d = LocalDate.parse(text, f);
} catch (DateTimeParseException e) {
// 텍스트가 패턴과 일치하지 않습니다
} catch (IllegalArgumentException e) {
// 패턴이 유효하지 않습니다
}챌린지
쉬움formatDate라는 이름의 메서드를 만들고 다음 세 개의 인수를 받도록 하세요:
- String(
dateStr): 입력 패턴으로 작성된 날짜 - String(
inputPattern): 입력 날짜의 패턴 - String(
outputPattern): 원하는 출력 패턴
메서드는 다음을 수행해야 합니다:
- 입력 패턴을 사용하여 입력 날짜를 파싱합니다
- 출력 패턴을 사용하여 날짜 형식을 지정합니다
- 다음 패턴을 처리합니다:
- "basic": "yyyy-MM-dd"
- "long": "MMMM d, yyyy"
- "short": "MM/dd/yy"
- "custom": 실제 패턴 문자열
반환 메시지는 다음과 같아야 합니다:
- 날짜가 유효하지 않은 경우: "Invalid date format"를 반환합니다
- 패턴이 유효하지 않은 경우: "Invalid pattern"를 반환합니다
- 성공한 경우: 형식이 지정된 날짜를 반환합니다
직접 해보기
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) {
// 여기에 코드를 작성하세요
}
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));
}
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
논리와 흐름의 모든 레슨
직접 연습해 보세요: 온라인 Java 컴파일러