From 29e91c0dc9740c24cf975e3c48bfa0f1d145a88e Mon Sep 17 00:00:00 2001 From: DongHoon Lee Date: Wed, 31 Dec 2025 23:35:33 +0900 Subject: [PATCH 1/2] =?UTF-8?q?chore:=20SlackNotificationService=20?= =?UTF-8?q?=EB=82=A0=EC=A7=9C=20=ED=8C=8C=EC=8B=B1=20=EC=98=88=EC=99=B8=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC=20=EB=B0=8F=20Fallback=20=EB=A1=9C=EC=A7=81?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../makers/service/SlackNotificationService.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/sopt/makers/service/SlackNotificationService.java b/src/main/java/org/sopt/makers/service/SlackNotificationService.java index dac72ce..a77bd36 100644 --- a/src/main/java/org/sopt/makers/service/SlackNotificationService.java +++ b/src/main/java/org/sopt/makers/service/SlackNotificationService.java @@ -156,8 +156,17 @@ private Block buildActionsBlock(String webUrl) { * ISO 날짜 포맷팅 */ private String formatDateTime(String isoDatetime) { - OffsetDateTime utcTime = OffsetDateTime.parse(isoDatetime, DateTimeFormatter.ISO_DATE_TIME); - LocalDateTime koreaTime = utcTime.atZoneSameInstant(ZoneId.of(TIMEZONE_SEOUL)).toLocalDateTime(); - return koreaTime.format(DateTimeFormatter.ofPattern(DATE_FORMAT_PATTERN)); + if (isoDatetime == null) { + return "Unknown Date"; + } + + try { + OffsetDateTime utcTime = OffsetDateTime.parse(isoDatetime, DateTimeFormatter.ISO_DATE_TIME); + LocalDateTime koreaTime = utcTime.atZoneSameInstant(ZoneId.of(TIMEZONE_SEOUL)).toLocalDateTime(); + return koreaTime.format(DateTimeFormatter.ofPattern(DATE_FORMAT_PATTERN)); + } catch (DateTimeException e) { + log.warn("[Date Parsing Failed] rawValue={}", isoDatetime); + return isoDatetime; + } } } From 42343aaebe17b7382cf950505f3a859593a57934 Mon Sep 17 00:00:00 2001 From: DongHoon Lee Date: Wed, 31 Dec 2025 23:35:44 +0900 Subject: [PATCH 2/2] =?UTF-8?q?chore:=20DiscordNotificationService=20?= =?UTF-8?q?=EB=82=A0=EC=A7=9C=20=ED=8C=8C=EC=8B=B1=20=EC=98=88=EC=99=B8=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC=20=EB=B0=8F=20Fallback=20=EB=A1=9C=EC=A7=81?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/DiscordNotificationService.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/sopt/makers/service/DiscordNotificationService.java b/src/main/java/org/sopt/makers/service/DiscordNotificationService.java index 378ec49..33a0f90 100644 --- a/src/main/java/org/sopt/makers/service/DiscordNotificationService.java +++ b/src/main/java/org/sopt/makers/service/DiscordNotificationService.java @@ -181,8 +181,17 @@ private int convertHexColorToInt(String hexColor) { * ISO 날짜 포맷팅 */ private String formatDateTime(String isoDatetime) { - OffsetDateTime utcTime = OffsetDateTime.parse(isoDatetime, DateTimeFormatter.ISO_DATE_TIME); - LocalDateTime koreaTime = utcTime.atZoneSameInstant(ZoneId.of(TIMEZONE_SEOUL)).toLocalDateTime(); - return koreaTime.format(DateTimeFormatter.ofPattern(DATE_FORMAT_PATTERN)); + if (isoDatetime == null) { + return "Unknown Date"; + } + + try { + OffsetDateTime utcTime = OffsetDateTime.parse(isoDatetime, DateTimeFormatter.ISO_DATE_TIME); + LocalDateTime koreaTime = utcTime.atZoneSameInstant(ZoneId.of(TIMEZONE_SEOUL)).toLocalDateTime(); + return koreaTime.format(DateTimeFormatter.ofPattern(DATE_FORMAT_PATTERN)); + } catch (DateTimeException e) { + log.warn("[Date Parsing Failed] rawValue={}", isoDatetime); + return isoDatetime; + } } }