TimeFormatter 라는 유틸리티 클래스에서 게시글 생성시간에 대해 포맷팅 작업을 통해, 시간별로 다른 형식의 시간을 반환했다. Android 팀원의 요구사항으로 인해 "yyyy/MM/dd HH:mm:ss” 형식으로 반환하도록 수정하게 되었다. 이에 따라 클라이언트 측에서 시간 포맷팅 작업을 수행하기로 결정되었다.
1. TimeFormatter 유틸리티 수정
기존 코드
public class TimeFormatter {
public static String timeFormat(LocalDateTime time) {
LocalDateTime now = LocalDateTime.now();
Duration duration = Duration.between(time, now);
if(duration.getSeconds() < 60) {
return duration.getSeconds() + "초 전";
} else if(duration.toMinutes() < 60) {
return duration.toMinutes() + "분 전";
} else if(duration.toHours() < 24) {
return duration.toHours() + "시간 전";
} else if(duration.toDays() < 7) {
return duration.toDays() + "일 전";
} else {
if (time.getYear() != now.getYear()) {
return time.format(DateTimeFormatter.ofPattern("yyyy년 M월 d일"));
} else {
return time.format(DateTimeFormatter.ofPattern("M월 d일"));
}
}
}
시간의 경과에 따라 “초 전”, “분 전”, “시간 전”, “일 전”, "yyyy년 M월 d일", "M월 d일"로 시간을 반환했다.
수정 코드
public class TimeFormatter {
public static String timeFormat(LocalDateTime time) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
return time.format(formatter);
}
}
`DateTimeFormatter.ofPattern()` 를 사용해 모든 시간을 "yyyy/MM/dd HH:mm:ss" 형식으로 반환한다.
2. 서비스 수정
“게시글 상세조회”와 관련 로직에서 TimeFormatter 사용 부분을 변경했다.
기존 코드
@Transactional
public PostDetailResponseDto getPostDetail(Long userId, Long postId) {
// ... (기존 코드 생략)
String formatterDate = TimeFormatter.timeFormat(post.getCreateDate());
PostDetailResponseDto postDetailResponseDto =
PostDetailResponseDto.builder()
// ... (다른 필드 생략)
.createDate(formatterDate) // 기존
// ... (다른 필드 생략)
.build();
return postDetailResponseDto;
}
기존에는 `TimeFormatter` 를 사용해 포맷팅된 날짜를 별도의 변수에 저장한 후 DTO에 설정했다.
수정 코드
@Transactional
public PostDetailResponseDto getPostDetail(Long userId, Long postId) {
// ... (기존 코드 생략)
PostDetailResponseDto postDetailResponseDto =
PostDetailResponseDto.builder()
// ... (다른 필드 생략)
.createDate(TimeFormatter.timeFormat(post.getCreateDate())) // 변경
// ... (다른 필드 생략)
.build();
return postDetailResponseDto;
}
`TimeFormatter.timeFormat()` 을 직접 DTO 빌드 내에서 호출하여 사용한다. 추가적인 변수를 사용하지 않았다.
반응형
'Projects > 청하-청년을 위한 커뮤니티 서비스' 카테고리의 다른 글
[청하] 11. 게시글 삭제 기능 구현 (feat. NCP Object Storage 이미지 삭제) (1) | 2024.10.09 |
---|---|
[청하] 10. 게시글 리스트 조회 기능 구현 (feat. 정적 팩토리 메서드) (5) | 2024.10.08 |
[청하] 8. 게시글 상세조회 기능 구현 (feat. LocalDateTime) (0) | 2024.10.07 |
[청하] 7. 게시글 등록 기능 - 인가 권한 설정 (0) | 2024.10.07 |
[청하] 6. 게시글 등록 기능 - @ModelAttribute를 이용한 form-data 처리 개선 (0) | 2024.10.07 |
댓글