Java에서 date.format() 은 날짜/시간 객체를 지정한 포맷 문자열로 변환하는 메서드임.
Java 8 이후의 java.time API에서는 LocalDate, LocalDateTime, ZonedDateTime 등에서 format() 메서드를 지원함.
date.format() – 날짜 객체를 문자열로 변환하는 메서드
format() 은 Java 8 이상의 java.time 패키지에서 제공되며,
날짜/시간 객체를 사람이 읽을 수 있는 문자열 형태로 포맷할 때 사용함.
DateTimeFormatter 와 함께 사용되며, 스레드 세이프하고 직관적인 날짜 출력 방식을 제공함.
1. 기본 사용법
LocalDate date = LocalDate.of(2025, 5, 21);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String result = date.format(formatter); // "2025-05-21"
- date.format() 은 내부적으로 formatter의 format(date) 와 같음
- DateTimeFormatter 객체를 넘겨서 출력 형식을 지정함
2. LocalDateTime 예제
LocalDateTime now = LocalDateTime.of(2025, 5, 21, 14, 30, 0);
String formatted = now.format(DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm")); // "2025/05/21 14:30"
3. 자주 사용하는 포맷 예시
포맷 | 문자열 의미 | 결과 예시 |
yyyy-MM-dd | 연-월-일 | "2025-05-21" |
yyyy년 M월 d일 | 한글 날짜 표현 | "2025년 5월 21일" |
yyyyMMdd_HHmmss | 파일명 등 기술적 표기 | "20250521_143000" |
EEEE | 요일 (풀 이름) | "Wednesday" |
a hh:mm | 오전/오후 시:분 | "오후 02:30" |
4. ZonedDateTime 예시 (시간대 포함)
ZonedDateTime zdt = ZonedDateTime.now(ZoneId.of("Asia/Seoul"));
String result = zdt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm z"));
// 예: "2025-05-21 14:30 KST"
5. DateTimeFormatter.ofLocalizedDateTime 사용
String result = LocalDateTime.now().format(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM));
- SHORT, MEDIUM, LONG, FULL 등으로 로케일 기반 포맷도 가능함
- 로케일 변경은 .withLocale(Locale.KOREA) 등으로 지정
6. 실무 사용 사례
사용 목적 | 포맷 |
UI 출력용 | yyyy년 M월 d일 (E) |
파일명에 포함 | yyyyMMdd_HHmmss |
API 응답 JSON 포맷 | yyyy-MM-dd'T'HH:mm:ss (ISO 8601) |
로그 기록 | yyyy-MM-dd HH:mm:ss.SSS |
7. 실수 주의사항
잘못된 코드 | 원인 |
"mm" → 분 / "MM" → 월 | 혼동되기 쉬움 |
hh 사용 시 a 없이 출력 | 12시간제는 a와 함께 사용해야 정확함 |
format() 호출 시 NullPointerException | formatter가 null이거나 날짜 객체가 null인 경우 발생함 |
정리
date.format(DateTimeFormatter) 은 Java 8 이상에서
LocalDate, LocalDateTime, ZonedDateTime 등의 날짜 객체를 사람이 읽을 수 있는 문자열로 포맷하는 메서드임.
DateTimeFormatter.ofPattern() 과 함께 사용하여
간단하고 안전하게 날짜/시간을 문자열로 출력할 수 있음.
출처 : ChatGPT
'BE > Java' 카테고리의 다른 글
중첩, 내부클래스 (2) | 2025.07.21 |
---|---|
LocalDate.parse(입력문자,포맷); (1) | 2025.05.29 |
DateTimeFormatter.ofPattern (0) | 2025.05.27 |
temporalAdjusters (0) | 2025.05.26 |
chronofield (0) | 2025.05.25 |