[스프링 부트] 15. 날짜 포맷 변환 유틸 구현

lhs's avatar
Nov 18, 2024
[스프링 부트] 15. 날짜 포맷 변환 유틸 구현
 

1. 유틸 패키지 만들기

notion image
  • 패키지 이름 앞에 언더바를 붙여 _core 패키지를 만들어, 이를 제일 위로 정렬되게 한다.
  • .keep 파일은 프로젝트에서 패키지 구조를 명확히 하기 위해 _core 패키지 안에 둔다.
  • _core 패키지 안에 util 패키지를 만들고, 그 안에 MyDate.java 클래스를 생성한다.

2. MyDate

public class MyDate { public static String formatToStr(Timestamp createdAt){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd"); String formattedDate = sdf.format(createdAt); return formattedDate; } }
  • 날짜 관련 기능을 재사용 가능하게 모은 유틸리티 클래스이다.
  • static을 사용하여 객체를 생성할 필요 없이 메서드를 클래스 이름으로 직접 호출할 수 있게 했다.
  • SimpleDateFormat("yyyy.MM.dd") : 날짜 형식을 지정하여 날짜를 문자열로 변환하는 클래스의 생성자
    • "yyyy.MM.dd" : 날짜를 2024.11.18과 같이 연도(4자리), 월(2자리), 일(2자리) 형식으로 변환하는 패턴
  • format() : Timestamp 타입의 데이터를 sdf의 패턴을 사용해 문자열로 변환하는 메서드

3. MyDateTest

public class MyDataTest { @Test public void formatToStr() { // given Timestamp createdAt = new Timestamp(System.currentTimeMillis()); // when SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd"); String formattedDate = sdf.format(createdAt); // eye(then) System.out.println(formattedDate); } }
  • 메서드를 테스트하기 위한 테스트 클래스이다.
  • 테스트의 3가지 단계
    • given : 테스트를 위한 입력 값을 설정하는 단계
      • Timestamp 타입의 데이터를 현재 시간으로 생성하여 메서드에 전달할 입력값을 준비한다.
    • when : 테스트할 메서드를 실행하는 단계
      • Timestamp 타입의 데이터를 "yyyy.MM.dd" 형식의 문자열로 변환하는 메서드를 실행한다.
    • then : 결과를 검증하는 단계
      • 출력으로 결과를 검증하는 방식으로 대체하였다.

4. MyDate 적용

@Data public static class DetailDTO { private int id; private String title; private String content; private String createdAt; public DetailDTO(Board board) { this.id = board.getId(); this.title = board.getTitle(); this.content = board.getContent(); this.createdAt = MyDate.formatToStr(board.getCreatedAt()); } }
BoardResponse.java
  • BoardResponse의 내부 클래스 DetailDTO에서 createdAt 필드를 MyDate 클래스의 formatToStr 메서드를 사용하여 지정된 날짜 형식으로 변환하였다.
Share article

LHS's Study Space