-
[Java] DateTimeFormatter로 LocalDateTime 포맷팅 하기Language/Java 2023. 7. 31. 23:10
로드맵 플랫폼인 RoadMaker를 개발 중, 프론트엔드 팀원이 로드맵 생성 일자를 포맷팅 해달라는 요청을 했다.
이전 포맷은 '2023-07-29T15:40:31.849326'와 같은 ISO-8601 포맷이었는데
이는 너무 길어 UI가 예쁘게 나오지 않았고, 사용자가 읽기도 어려울 것 같았다.
LocalDateTime 객체를 원하는 형식으로 포맷팅하려면 'java.time.format.DateTimeFormatter' 클래스를 사용하면 된다.
DateTimeFormatter 클래스의 기본 사용법은 다음과 같다.
import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; public class DateTimeFormatting { public static void main(String[] args) { // LocalDateTime 객체 LocalDateTime dateTime = LocalDateTime.now(); // 원하는 포맷 지정 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy. MM. dd"); // 포맷 변환 String formattedDateTime = dateTime.format(formatter); // 출력 System.out.println(formattedDateTime); // "2023. 07. 29" } }
Roadmap entity를 RoadmapResponse로 변환하는 'of' 메서드에서
DateTimeFormatting 클래스를 사용하여 날짜를 포맷팅 해주었다.
package com.roadmaker.roadmap.dto; import com.roadmaker.member.dto.MemberResponse; import com.roadmaker.member.entity.Member; import com.roadmaker.roadmap.entity.roadmap.Roadmap; import lombok.*; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @Getter @ToString @Builder @NoArgsConstructor(access = AccessLevel.PRIVATE) @AllArgsConstructor public class RoadmapResponse { private Long id; private String title; private String description; private String thumbnailUrl; private MemberResponse member; private String createdAt; private String updatedAt; // 포맷팅 static method private static String formatDate(LocalDateTime dateTime) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy. M. dd."); return dateTime.format(formatter); } public static RoadmapDto of(Roadmap roadmap, Member member) { return RoadmapDto.builder() .id(roadmap.getId()) .title(roadmap.getTitle()) .description(roadmap.getDescription()) .thumbnailUrl(roadmap.getThumbnailUrl()) // creatdAt과 updatedAt을 포맷팅 .createdAt(formatDate(roadmap.getCreatedAt())) .updatedAt(formatDate(roadmap.getUpdatedAt())) .member(MemberResponse.of(member)) .build(); } }
이후 프론트엔드에서 로드맵을 요청할 때, 포맷팅 된 createdAt과 updatedAt을 반환할 수 있게 하였다.
'Language > Java' 카테고리의 다른 글
[Java] 금융 거래에는 BigDecimal을 사용하자. (0) 2024.02.19 [Java] 객체지향 설계원칙, SOLID 알아보기 (0) 2024.01.11 [Java] 객체지향 프로그래밍에 대해 알아보자 (0) 2023.12.27 [Java] equals와 hashCode (0) 2023.09.27