From f46b02efa8254d62e85575fb493ea1f7a953413e Mon Sep 17 00:00:00 2001 From: adonis Date: Sun, 9 Aug 2026 16:15:32 +0330 Subject: [PATCH] Keep clock time when formatting ISO datetimes. Date-only local parsing was matching any string starting with YYYY-MM-DD and zeroed hours to 00:00 in order lists. Co-authored-by: Cursor --- src/utils/format.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/utils/format.ts b/src/utils/format.ts index 505d2e8..52b2a3d 100644 --- a/src/utils/format.ts +++ b/src/utils/format.ts @@ -57,10 +57,11 @@ function isJalaliDateString(value: string): boolean { function toDateValue(date: string | Date): Date { if (typeof date !== 'string') return date const trimmed = date.trim() - // YYYY-MM-DD (and datetime starting with it) as local calendar date — avoids UTC day-shift - const isoDay = trimmed.match(/^(\d{4})-(\d{2})-(\d{2})/) - if (isoDay && Number(isoDay[1]) >= 1700) { - return new Date(Number(isoDay[1]), Number(isoDay[2]) - 1, Number(isoDay[3])) + // فقط تاریخِ بدون ساعت (YYYY-MM-DD) را به‌صورت تقویم محلی بخوان تا شیفت UTC روز را جابه‌جا نکند. + // رشته‌های دارای ساعت (…T10:30:00 یا … 10:30) باید کامل پارس شوند. + const dateOnly = trimmed.match(/^(\d{4})-(\d{2})-(\d{2})$/) + if (dateOnly && Number(dateOnly[1]) >= 1700) { + return new Date(Number(dateOnly[1]), Number(dateOnly[2]) - 1, Number(dateOnly[3])) } const parsed = new Date(trimmed) if (Number.isNaN(parsed.getTime())) return new Date(NaN)