From 661b2652515d4bf8dee5b816ed84c28b421b4d67 Mon Sep 17 00:00:00 2001 From: neon <18559658+neonsolstice@users.noreply.github.com> Date: Sun, 30 Aug 2026 04:27:13 +0000 Subject: [PATCH] fix(metadata): preserve calendar dates across timezones Keep month-name metadata dates stable in positive UTC offsets so local-to-UTC conversion cannot change the stored calendar day. Fixes #1194 --- server/src/common/utils/published-date.utils.test.ts | 1 + server/src/common/utils/published-date.utils.ts | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/server/src/common/utils/published-date.utils.test.ts b/server/src/common/utils/published-date.utils.test.ts index edc39fab8..bce0a609b 100644 --- a/server/src/common/utils/published-date.utils.test.ts +++ b/server/src/common/utils/published-date.utils.test.ts @@ -28,6 +28,7 @@ describe('published-date utils', () => { expect(parsePublishedDateKey('1965/8/1')).toBe('1965-08-01'); expect(parsePublishedDateKey('1965-08-01T12:30:00Z')).toBe('1965-08-01'); expect(parsePublishedDateKey('August 1, 1965')).toBe('1965-08-01'); + expect(parsePublishedDateKey('January 1, 2020')).toBe('2020-01-01'); expect(parsePublishedDateKey('1965')).toBeUndefined(); }); diff --git a/server/src/common/utils/published-date.utils.ts b/server/src/common/utils/published-date.utils.ts index e45caac04..65869bab3 100644 --- a/server/src/common/utils/published-date.utils.ts +++ b/server/src/common/utils/published-date.utils.ts @@ -60,7 +60,8 @@ export function parsePublishedDateKey(value: unknown): string | undefined { if (MONTH_NAME_RE.test(trimmed) && /\b\d{1,2}\b/.test(trimmed) && /\b\d{4}\b/.test(trimmed)) { const parsed = new Date(trimmed); - return dateToPublishedDateKey(parsed); + if (Number.isNaN(parsed.getTime())) return undefined; + return buildDateKey(String(parsed.getFullYear()), String(parsed.getMonth() + 1), String(parsed.getDate())); } return undefined;