From 25b70112139d266f67c5559c98481f222b691e4a Mon Sep 17 00:00:00 2001 From: seonghobae <8172694+seonghobae@users.noreply.github.com> Date: Sat, 10 Oct 2026 22:56:29 +0000 Subject: [PATCH] =?UTF-8?q?=E2=9A=A1=20Bolt:=20timestamp=20primitive?= =?UTF-8?q?=EB=A5=BC=20=EC=96=BB=EA=B8=B0=20=EC=9C=84=ED=95=B4=20Date.pars?= =?UTF-8?q?e=20=EC=82=AC=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/web/src/lib/format.ts | 21 ++++++++++++--------- packages/web/src/lib/server/dashboard.ts | 11 +++++------ 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/packages/web/src/lib/format.ts b/packages/web/src/lib/format.ts index ef2f60cc..22d21202 100644 --- a/packages/web/src/lib/format.ts +++ b/packages/web/src/lib/format.ts @@ -23,7 +23,8 @@ export function formatCost(usd: number): string { export function formatDate(s: string): string { try { - const date = new Date(s) + const date = Date.parse(s) + if (Number.isNaN(date)) return s return dateFnsFormat(date, 'MMM d') } catch { return s @@ -32,8 +33,8 @@ export function formatDate(s: string): string { export function formatDateTime(s: string): string { try { - const date = new Date(s) - if (Number.isNaN(date.getTime())) return s + const date = Date.parse(s) + if (Number.isNaN(date)) return s return dateFnsFormat(date, 'MM/dd/yyyy h:mm:ss a') } catch { return s @@ -43,8 +44,8 @@ export function formatDateTime(s: string): string { // 2026-04-13 16:29:29 형태 export function formatDateTimeFull(s: string): string { try { - const date = new Date(s) - if (Number.isNaN(date.getTime())) return s + const date = Date.parse(s) + if (Number.isNaN(date)) return s return dateFnsFormat(date, 'yyyy-MM-dd HH:mm:ss') } catch { return s @@ -61,15 +62,17 @@ export function formatRelativeTime(timestamp: string, baseTimestamp: string): st export function formatRelativeTime(timestamp: string, baseTimestamp?: string): string { if (baseTimestamp === undefined) { try { - return formatDistanceToNow(new Date(timestamp), { addSuffix: true, locale: ko }) + const date = Date.parse(timestamp) + if (Number.isNaN(date)) return timestamp + return formatDistanceToNow(date, { addSuffix: true, locale: ko }) } catch { return timestamp } } - const timestampDate = new Date(timestamp) - const baseDate = new Date(baseTimestamp) - const diffMs = timestampDate.getTime() - baseDate.getTime() + const timestampDate = Date.parse(timestamp) + const baseDate = Date.parse(baseTimestamp) + const diffMs = timestampDate - baseDate const totalMinutes = Math.floor(diffMs / 60000) if (totalMinutes < 60) { diff --git a/packages/web/src/lib/server/dashboard.ts b/packages/web/src/lib/server/dashboard.ts index 62a6a875..fce968e8 100644 --- a/packages/web/src/lib/server/dashboard.ts +++ b/packages/web/src/lib/server/dashboard.ts @@ -133,19 +133,18 @@ export function parseDateRange(from?: string, to?: string): DateRange { let toDate: Date if (from) { - fromDate = new Date(from) - if (isNaN(fromDate.getTime())) { - fromDate = defaultFrom - } + const fromTime = Date.parse(from) + fromDate = isNaN(fromTime) ? defaultFrom : new Date(fromTime) } else { fromDate = defaultFrom } if (to) { - toDate = new Date(to) - if (isNaN(toDate.getTime())) { + const toTime = Date.parse(to) + if (isNaN(toTime)) { toDate = now } else { + toDate = new Date(toTime) // "2026-04-16" → UTC 00:00:00 이므로 해당 날짜의 끝(23:59:59.999)으로 보정 toDate.setUTCHours(23, 59, 59, 999) }