From 6132c656e474077c2a7f1e7c3cf99941865581f8 Mon Sep 17 00:00:00 2001 From: Jason Varga Date: Tue, 8 Apr 2025 10:31:09 -0400 Subject: [PATCH 1/3] wip --- packages/@internationalized/date/src/index.ts | 2 ++ packages/@internationalized/date/src/queries.ts | 11 ++++++++++- .../@internationalized/date/tests/queries.test.js | 13 +++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/packages/@internationalized/date/src/index.ts b/packages/@internationalized/date/src/index.ts index d55e305e8f9..22e703f66f5 100644 --- a/packages/@internationalized/date/src/index.ts +++ b/packages/@internationalized/date/src/index.ts @@ -63,6 +63,8 @@ export { today, getHoursInDay, getLocalTimeZone, + setLocalTimeZone, + resetLocalTimeZone, startOfMonth, startOfWeek, startOfYear, diff --git a/packages/@internationalized/date/src/queries.ts b/packages/@internationalized/date/src/queries.ts index 1d32b74d7a9..fc95a2f7634 100644 --- a/packages/@internationalized/date/src/queries.ts +++ b/packages/@internationalized/date/src/queries.ts @@ -133,7 +133,6 @@ let localTimeZone: string | null = null; /** Returns the time zone identifier for the current user. */ export function getLocalTimeZone(): string { - // TODO: invalidate this somehow? if (localTimeZone == null) { localTimeZone = new Intl.DateTimeFormat().resolvedOptions().timeZone; } @@ -141,6 +140,16 @@ export function getLocalTimeZone(): string { return localTimeZone!; } +/** Sets the time zone identifier for the current user. */ +export function setLocalTimeZone(timeZone: string): void { + localTimeZone = timeZone; +} + +/** Resets the time zone identifier for the current user. */ +export function resetLocalTimeZone(): void { + localTimeZone = null; +} + /** Returns the first date of the month for the given date. */ export function startOfMonth(date: ZonedDateTime): ZonedDateTime; export function startOfMonth(date: CalendarDateTime): CalendarDateTime; diff --git a/packages/@internationalized/date/tests/queries.test.js b/packages/@internationalized/date/tests/queries.test.js index 87650e38af4..6fbd97220e3 100644 --- a/packages/@internationalized/date/tests/queries.test.js +++ b/packages/@internationalized/date/tests/queries.test.js @@ -17,6 +17,7 @@ import { endOfYear, EthiopicCalendar, getDayOfWeek, + getLocalTimeZone, getMinimumDayInMonth, getMinimumMonthInYear, getWeeksInMonth, @@ -31,6 +32,8 @@ import { maxDate, minDate, PersianCalendar, + resetLocalTimeZone, + setLocalTimeZone, startOfMonth, startOfWeek, startOfYear, @@ -343,4 +346,14 @@ describe('queries', function () { expect(b.compare(a)).toBeGreaterThan(0); }); }); + + describe('getLocalTimeZone', function () { + it('gets local time zone', function () { + expect(getLocalTimeZone()).toBe('America/New_York'); + setLocalTimeZone('America/Denver'); + expect(getLocalTimeZone()).toBe('America/Denver'); + resetLocalTimeZone(); + expect(getLocalTimeZone()).toBe('America/New_York'); + }); + }); }); From 831f790c1901bb5bacea7474fe7ee2830704f28f Mon Sep 17 00:00:00 2001 From: Jason Varga Date: Tue, 8 Apr 2025 10:35:27 -0400 Subject: [PATCH 2/3] bump actions From 25f45ae14d4805966680cf60a4631543ff23382b Mon Sep 17 00:00:00 2001 From: Jason Varga Date: Tue, 8 Apr 2025 10:50:10 -0400 Subject: [PATCH 3/3] use system time zone --- packages/@internationalized/date/tests/queries.test.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/@internationalized/date/tests/queries.test.js b/packages/@internationalized/date/tests/queries.test.js index 6fbd97220e3..5d6c75c0290 100644 --- a/packages/@internationalized/date/tests/queries.test.js +++ b/packages/@internationalized/date/tests/queries.test.js @@ -349,11 +349,12 @@ describe('queries', function () { describe('getLocalTimeZone', function () { it('gets local time zone', function () { - expect(getLocalTimeZone()).toBe('America/New_York'); + const systemTimeZone = new Intl.DateTimeFormat().resolvedOptions().timeZone; + expect(getLocalTimeZone()).toBe(systemTimeZone); setLocalTimeZone('America/Denver'); expect(getLocalTimeZone()).toBe('America/Denver'); resetLocalTimeZone(); - expect(getLocalTimeZone()).toBe('America/New_York'); + expect(getLocalTimeZone()).toBe(systemTimeZone); }); }); });