1. 유틸 패키지 만들기

- 패키지 이름 앞에 언더바를 붙여
_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
의 내부 클래스DetailDTO
에서createdAt
필드를MyDate
클래스의formatToStr
메서드를 사용하여 지정된 날짜 형식으로 변환하였다.
Share article