BE/Java

date.format()

baek-dev 2025. 5. 28. 15:01

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