Java에서 날짜와 시간 데이터를 다루는 것은 다양한 애플리케이션 개발에서 필수적인 요소입니다.
특히 LocalDateTime 클래스는 날짜와 시간의 복합적인 데이터를 관리하기 위한 대표적인 클래스입니다.
하지만 LocalDateTime은 그대로 출력하면 사람이 읽기 어렵거나, 원하는 형식과 맞지 않을 때가 많습니다.
예를 들어, “2025-02-12T14:30:00”처럼 나오는 날짜 형식은 사용자가 보기 불편할 수 있습니다.
이를 해결하기 위해 날짜 형식을 보기 좋은 문자열 형태로 변환하는 방법이 유용하게 사용됩니다.
이 글에서는 DateTimeFormatter 를 활용해 LocalDateTime을 사용자 친화적인 형식으로 변환하는 방법과
실전 코드에서 이를 효율적으로 적용하는 사례를 다루겠습니다.
🔍 LocalDateTime와 DateTimeFormatter
LocalDateTime 클래스는 날짜와 시간 정보를 동시에 다루기 위한 Java 클래스입니다.
그러나 기본적으로 제공되는 형식은 2025-02-12T14:30:00처럼 ISO 8601 표준 형식으로 출력됩니다.
이런 형식은 프로그램 내부에서는 유용할 수 있지만, 사용자 인터페이스에서 보기에는 직관적이지 않을 수 있습니다.
Java에서는 DateTimeFormatter 클래스를 통해 날짜 및 시간 데이터를 원하는 형식의 문자열로 변환할 수 있습니다.
@Getter
public class ResponseDto {
private final String createdAt;
private final String updatedAt;
public responseDto(LocalDateTime createdAt, LocalDateTime updatedAt) {
this.createdAt = formatDate(createdAt);
this.updatedAt = formatDate(updatedAt);
}
// 날짜 형식 변환 메서드
private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
public static String formatDate(LocalDateTime datetime) {
return Optional.ofNullable(datetime)
.map(FORMATTER::format)
.orElse(null);
}
}
(1) DateTimeFormatter 사용
`DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")` 로 원하는 형식의 패턴을 정의합니다
`ofPattern()` 메소드는 날짜와 시간을 특정 형식으로 포맷하는 패턴을 지정합니다.
다양한 변환 형식
패턴 | 출력 결과 | 설명 |
yyyy-MM-dd HH:mm | 2025-01-01 14:30 | 날짜와 시간 표시 |
yyyy-MM-dd | 2025-01-01 | 날짜만 표시 |
yyyy년 MM월 dd일 | 2025년 01월 01일 | 한국식 날짜 형식 |
HH:mm:ss | 14:30:00 | 시간만 표시 |
(2) Optional을 활용한 안전한 처리
`Optional.ofNullable(datetime)`을 사용해 null 값에 대한 예외 처리를 방지합니다.
dateTime이 null 일 수도 있으므로, Optional로 감싸 처리합니다.
값이 존재할 경우 FORMATTER::format으로 변환하고, null일 경우 null을 반환합니다.
LocalDateTime 형식을 DateTimeFormatter와 Optional을 사용해 변환하면 사용자 친화적으로 데이터를 제공할 수 있습니다.
이를 통해 데이터 가독성 향상뿐 아니라 더 나은 사용자 경험을 보장할 수 있습니다.
💡 핵심 요약
• DateTimeFormatter를 사용해 원하는 날짜 형식으로 변환할 수 있습니다.
• Optional을 활용해 null 값을 안전하게 처리할 수 있습니다.
• 다양한 패턴을 적용해 국가별 또는 프로젝트 요구 사항에 맞는 날짜 형식을 구현할 수 있습니다.