10.3 날짜/시간 포맷팅 (DateTimeFormatter)
날짜와 시간을 자바 내부에서 계산하는 것은 마쳤습니다. 이제 마지막 관문인 "사람이 읽기 쉬운 형태로 날짜 문자열을 만들거나, 반대로 문자열을 날짜 객체로 바꾸는 방법" 을 배워봅니다.
이를 위해 DateTimeFormatter 클래스를 사용합니다.
1. 날짜 객체 → 문자열 변환: format()
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
LocalDateTime now = LocalDateTime.now();
// 원하는 날짜 형식 패턴을 지정합니다
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy년 MM월 dd일 HH:mm:ss");
// LocalDateTime 객체를 지정한 포맷의 문자열로 변환
String formatted = now.format(formatter);
System.out.println(formatted); // 2026년 03월 13일 17:30:08
주요 패턴 문자 표
| 패턴 | 의미 | 예시 |
|---|---|---|
yyyy | 연도(4자리) | 2026 |
yy | 연도(2자리) | 26 |
MM | 월(2자리, 01~12) | 03 |
M | 월(1 | 3 |
dd | 날짜(2자리, 01~31) | 07 |
d | 날짜(1 | 7 |
HH | 시간(24시간제, 00~23) | 17 |
hh | 시간(12시간제, 01~12) | 05 |
mm | 분(00~59) | 30 |
ss | 초(00~59) | 08 |
E | 요일 약어 | 목 |
EEEE | 요일 전체 이름 | 목요일 |
다양한 형태로 출력해보겠습니다:
LocalDateTime now = LocalDateTime.now();
// 미국식 날짜 표기
DateTimeFormatter us = DateTimeFormatter.ofPattern("MM/dd/yyyy");
System.out.println(now.format(us)); // 03/13/2026
// 한국식 날짜 + 요일 표기
DateTimeFormatter kr = DateTimeFormatter.ofPattern("yyyy년 MM월 dd일 (E)");
System.out.println(now.format(kr)); // 2026년 03월 13일 (목)
// ISO 8601 표준 형식 (API 통신에 자주 사용)
DateTimeFormatter iso = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss");
System.out.println(now.format(iso)); // 2026-03-13T17:30:08
2. 문자열 → 날짜 객체 변환: parse()
반대로, "2026-03-13" 같은 텍스트로 된 날짜 문자열을 LocalDate 객체로 변환 할 때는 parse() 메서드를 사용합니다. 웹 폼이나 API 등에서 날짜를 텍스트로 받아올 때 필수적으로 씁니다.
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
String dateString = "2026년 03월 13일";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy년 MM월 dd일");
// 문자열을 LocalDate 객체로 파싱
LocalDate parsedDate = LocalDate.parse(dateString, formatter);
System.out.println("파싱된 날짜: " + parsedDate); // 2026-03-13
System.out.println("연도: " + parsedDate.getYear()); // 2026
System.out.println("월: " + parsedDate.getMonthValue()); // 3
System.out.println("일: " + parsedDate.getDayOfMonth()); // 13
이것으로 자바에서 날짜와 시간을 다루는 핵심 기술을 모두 마스터했습니다!
LocalDate/LocalTime/LocalDateTime: 날짜/시간 객체 생성Period/Duration: 날짜/시간 간격 계산DateTimeFormatter: 날짜/시간 ↔ 문자열 변환
다음 Phase에서는 자바 컬렉션 프레임웍(List, Set, Map)을 배워보겠습니다!