From d50832ed7bc41c82127d45a0af66977868708f3f Mon Sep 17 00:00:00 2001 From: GiJungPark Date: Sun, 10 May 2026 01:03:28 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[REFACTOR]=20=EA=B8=B0=EC=A1=B4=20=ED=94=BC?= =?UTF-8?q?=EB=93=9C=20=EB=82=A0=EC=A7=9C=20=ED=8F=AC=EB=A7=B7=ED=8C=85=20?= =?UTF-8?q?=EB=A9=94=EC=84=9C=EB=93=9C=EB=A5=BC=20=EB=8C=93=EA=B8=80?= =?UTF-8?q?=EC=97=90=EC=84=9C=EB=8F=84=20=EC=82=AC=EC=9A=A9=ED=95=A0=20?= =?UTF-8?q?=EC=88=98=20=EC=9E=88=EB=8F=84=EB=A1=9D=20=EB=B2=94=EC=9A=A9=20?= =?UTF-8?q?=EC=A0=81=EC=9D=B8=20=EB=A9=94=EC=84=9C=EB=93=9C=20=EB=AA=85?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WSSServer/dto/feed/FeedGetResponse.java | 2 +- .../websoso/WSSServer/dto/feed/FeedInfo.java | 2 +- .../dto/feed/UserFeedGetResponse.java | 2 +- .../WSSServer/util/TimeFormatUtil.java | 8 +++--- .../WSSServer/util/TimeFormatUtilTest.java | 28 +++++++++---------- 5 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/main/java/org/websoso/WSSServer/dto/feed/FeedGetResponse.java b/src/main/java/org/websoso/WSSServer/dto/feed/FeedGetResponse.java index b5a996ef..a96d87e9 100644 --- a/src/main/java/org/websoso/WSSServer/dto/feed/FeedGetResponse.java +++ b/src/main/java/org/websoso/WSSServer/dto/feed/FeedGetResponse.java @@ -71,7 +71,7 @@ public static FeedGetResponse of(Feed feed, UserBasicInfo feedUserBasicInfo, Nov feedUserBasicInfo.nickname(), feedUserBasicInfo.avatarImage(), feed.getFeedId(), - TimeFormatUtil.formatFeedDate(feed.getCreatedDate()), + TimeFormatUtil.formatRelativeDateTime(feed.getCreatedDate()), feed.getFeedContent(), feed.getLikes().size(), isLiked, diff --git a/src/main/java/org/websoso/WSSServer/dto/feed/FeedInfo.java b/src/main/java/org/websoso/WSSServer/dto/feed/FeedInfo.java index 042a887e..db8bcbcf 100644 --- a/src/main/java/org/websoso/WSSServer/dto/feed/FeedInfo.java +++ b/src/main/java/org/websoso/WSSServer/dto/feed/FeedInfo.java @@ -59,7 +59,7 @@ public static FeedInfo of(Feed feed, UserBasicInfo userBasicInfo, Novel novel, B userBasicInfo.userId(), userBasicInfo.nickname(), userBasicInfo.avatarImage(), - TimeFormatUtil.formatFeedDate(feed.getCreatedDate()), + TimeFormatUtil.formatRelativeDateTime(feed.getCreatedDate()), feed.getFeedContent(), feed.getLikes().size(), isLiked, diff --git a/src/main/java/org/websoso/WSSServer/dto/feed/UserFeedGetResponse.java b/src/main/java/org/websoso/WSSServer/dto/feed/UserFeedGetResponse.java index 28ed3159..fa70d6c3 100644 --- a/src/main/java/org/websoso/WSSServer/dto/feed/UserFeedGetResponse.java +++ b/src/main/java/org/websoso/WSSServer/dto/feed/UserFeedGetResponse.java @@ -43,7 +43,7 @@ public static UserFeedGetResponse of(Feed feed, Novel novel, Long visitorId, Str return new UserFeedGetResponse( feed.getFeedId(), feed.getFeedContent(), - TimeFormatUtil.formatFeedDate(feed.getCreatedDate()), + TimeFormatUtil.formatRelativeDateTime(feed.getCreatedDate()), feed.getIsSpoiler(), isModified, likeUsers, diff --git a/src/main/java/org/websoso/WSSServer/util/TimeFormatUtil.java b/src/main/java/org/websoso/WSSServer/util/TimeFormatUtil.java index d975bc8f..7974a9ad 100644 --- a/src/main/java/org/websoso/WSSServer/util/TimeFormatUtil.java +++ b/src/main/java/org/websoso/WSSServer/util/TimeFormatUtil.java @@ -20,7 +20,7 @@ public class TimeFormatUtil { private static final DateTimeFormatter NOTIFICATION_FMT = DateTimeFormatter.ofPattern("yyyy.MM.dd"); /** - * 피드 날짜 포맷 + * 피드/댓글 날짜 포맷 * 60초 미만: 방금 전 * 1시간 미만: N분 전 * 24시간 미만: N시간 전 @@ -28,11 +28,11 @@ public class TimeFormatUtil { * 동일 년도: M월 d일 * 과거 년도: yyyy년 M월 d일 */ - public static String formatFeedDate(LocalDateTime createdDate) { - return formatFeedDate(createdDate, Clock.systemDefaultZone()); + public static String formatRelativeDateTime(LocalDateTime createdDate) { + return formatRelativeDateTime(createdDate, Clock.systemDefaultZone()); } - public static String formatFeedDate(LocalDateTime createdDate, Clock clock) { + public static String formatRelativeDateTime(LocalDateTime createdDate, Clock clock) { LocalDateTime now = LocalDateTime.now(clock); Duration duration = Duration.between(createdDate, now); diff --git a/src/test/java/org/websoso/WSSServer/util/TimeFormatUtilTest.java b/src/test/java/org/websoso/WSSServer/util/TimeFormatUtilTest.java index 8790efd7..eb1ec39b 100644 --- a/src/test/java/org/websoso/WSSServer/util/TimeFormatUtilTest.java +++ b/src/test/java/org/websoso/WSSServer/util/TimeFormatUtilTest.java @@ -15,63 +15,63 @@ class TimeFormatUtilTest { private static final ZoneId ZONE = ZoneId.systemDefault(); @Nested - @DisplayName("피드 날짜 포맷팅 테스트") + @DisplayName("피드/댓글 날짜 포맷팅 테스트") class FormatFeedDate { @DisplayName("60초 미만이면 '방금 전'을 반환한다") @Test void returnsJustNowForUnder60Seconds() { Clock clock = fixedClock("2024-01-15T12:00:00"); - assertThat(formatFeed(clock, 30)).isEqualTo("방금 전"); + assertThat(formatFeedAndComment(clock, 30)).isEqualTo("방금 전"); } @DisplayName("59초일 때 '방금 전'을 반환한다") @Test void returnsJustNowAt59Seconds() { Clock clock = fixedClock("2024-01-15T12:00:00"); - assertThat(formatFeed(clock, 59)).isEqualTo("방금 전"); + assertThat(formatFeedAndComment(clock, 59)).isEqualTo("방금 전"); } @DisplayName("60초이면 '1분 전'을 반환한다") @Test void returns1MinuteAt60Seconds() { Clock clock = fixedClock("2024-01-15T12:00:00"); - assertThat(formatFeed(clock, 60)).isEqualTo("1분 전"); + assertThat(formatFeedAndComment(clock, 60)).isEqualTo("1분 전"); } @DisplayName("59분이면 '59분 전'을 반환한다") @Test void returns59MinutesAt59Minutes() { Clock clock = fixedClock("2024-01-15T12:00:00"); - assertThat(formatFeed(clock, 59 * 60)).isEqualTo("59분 전"); + assertThat(formatFeedAndComment(clock, 59 * 60)).isEqualTo("59분 전"); } @DisplayName("1시간이면 '1시간 전'을 반환한다") @Test void returns1HourAt3600Seconds() { Clock clock = fixedClock("2024-01-15T12:00:00"); - assertThat(formatFeed(clock, 3600)).isEqualTo("1시간 전"); + assertThat(formatFeedAndComment(clock, 3600)).isEqualTo("1시간 전"); } @DisplayName("23시간이면 '23시간 전'을 반환한다") @Test void returns23HoursAt23Hours() { Clock clock = fixedClock("2024-01-15T12:00:00"); - assertThat(formatFeed(clock, 23 * 3600)).isEqualTo("23시간 전"); + assertThat(formatFeedAndComment(clock, 23 * 3600)).isEqualTo("23시간 전"); } @DisplayName("24시간이면 '1일 전'을 반환한다") @Test void returns1DayAt24Hours() { Clock clock = fixedClock("2024-01-15T12:00:00"); - assertThat(formatFeed(clock, 24 * 3600)).isEqualTo("1일 전"); + assertThat(formatFeedAndComment(clock, 24 * 3600)).isEqualTo("1일 전"); } @DisplayName("6일이면 '6일 전'을 반환한다") @Test void returns6DaysAt6Days() { Clock clock = fixedClock("2024-01-15T12:00:00"); - assertThat(formatFeed(clock, 6 * 24 * 3600)).isEqualTo("6일 전"); + assertThat(formatFeedAndComment(clock, 6 * 24 * 3600)).isEqualTo("6일 전"); } @DisplayName("같은 해이면 '월 일' 형식을 반환한다") @@ -79,7 +79,7 @@ void returns6DaysAt6Days() { void returnsMonthDayForSameYear() { Clock clock = fixedClock("2024-06-15T12:00:00"); LocalDateTime createdAt = LocalDateTime.parse("2024-01-01T00:00:00"); - assertThat(TimeFormatUtil.formatFeedDate(createdAt, clock)).isEqualTo("1월 1일"); + assertThat(TimeFormatUtil.formatRelativeDateTime(createdAt, clock)).isEqualTo("1월 1일"); } @DisplayName("다른 해이면 '년 월 일' 형식을 반환한다") @@ -87,7 +87,7 @@ void returnsMonthDayForSameYear() { void returnsYearMonthDayForDifferentYear() { Clock clock = fixedClock("2024-01-15T12:00:00"); LocalDateTime createdAt = LocalDateTime.parse("2023-12-31T00:00:00"); - assertThat(TimeFormatUtil.formatFeedDate(createdAt, clock)).isEqualTo("2023년 12월 31일"); + assertThat(TimeFormatUtil.formatRelativeDateTime(createdAt, clock)).isEqualTo("2023년 12월 31일"); } @DisplayName("미래 시각이면 '방금 전'을 반환한다") @@ -95,7 +95,7 @@ void returnsYearMonthDayForDifferentYear() { void returnsJustNowForFutureTime() { Clock clock = fixedClock("2024-01-15T12:00:00"); LocalDateTime future = LocalDateTime.now(clock).plusHours(1); - assertThat(TimeFormatUtil.formatFeedDate(future, clock)).isEqualTo("방금 전"); + assertThat(TimeFormatUtil.formatRelativeDateTime(future, clock)).isEqualTo("방금 전"); } } @@ -178,9 +178,9 @@ private Clock fixedClock(String isoDateTime) { ); } - private String formatFeed(Clock clock, long secondsBefore) { + private String formatFeedAndComment(Clock clock, long secondsBefore) { LocalDateTime createdAt = LocalDateTime.now(clock).minusSeconds(secondsBefore); - return TimeFormatUtil.formatFeedDate(createdAt, clock); + return TimeFormatUtil.formatRelativeDateTime(createdAt, clock); } private String formatNotification(Clock clock, long secondsBefore) { From b1235702ff337934bacfb04680c0a8dc7bf035b0 Mon Sep 17 00:00:00 2001 From: GiJungPark Date: Sun, 10 May 2026 22:28:27 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[FEAT]=20=EB=8C=93=EA=B8=80=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=20DTO=EC=97=90=EC=84=9C=20=EC=9E=91=EC=84=B1=20?= =?UTF-8?q?=EC=8B=9C=EA=B0=84=20=ED=91=9C=EA=B8=B0=20=EC=A0=95=EC=B1=85=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../websoso/WSSServer/dto/comment/CommentGetResponse.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/websoso/WSSServer/dto/comment/CommentGetResponse.java b/src/main/java/org/websoso/WSSServer/dto/comment/CommentGetResponse.java index e59f16b5..2ccd83a8 100644 --- a/src/main/java/org/websoso/WSSServer/dto/comment/CommentGetResponse.java +++ b/src/main/java/org/websoso/WSSServer/dto/comment/CommentGetResponse.java @@ -1,17 +1,15 @@ package org.websoso.WSSServer.dto.comment; -import com.fasterxml.jackson.annotation.JsonFormat; -import java.time.LocalDate; import org.websoso.WSSServer.feed.domain.Comment; import org.websoso.WSSServer.dto.user.UserBasicInfo; +import org.websoso.WSSServer.util.TimeFormatUtil; public record CommentGetResponse( Long userId, String nickname, String avatarImage, Long commentId, - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "M월 d일", timezone = "Asia/Seoul") - LocalDate createdDate, + String createdDate, String commentContent, Boolean isModified, Boolean isMyComment, @@ -26,7 +24,7 @@ public static CommentGetResponse of(UserBasicInfo userBasicInfo, Comment comment userBasicInfo.nickname(), userBasicInfo.avatarImage(), comment.getCommentId(), - comment.getCreatedDate().toLocalDate(), + TimeFormatUtil.formatRelativeDateTime(comment.getCreatedDate()), comment.getCommentContent(), !comment.getCreatedDate().equals(comment.getModifiedDate()), isMyComment,