diff --git a/.changeset/two-mirrors-doubt.md b/.changeset/two-mirrors-doubt.md new file mode 100644 index 000000000..331de12f8 --- /dev/null +++ b/.changeset/two-mirrors-doubt.md @@ -0,0 +1,5 @@ +--- +"@ebay/ebayui-core": patch +--- + +Use local time in calendar diff --git a/src/common/dates/date-utils.ts b/src/common/dates/date-utils.ts index 557532561..f7e21a558 100644 --- a/src/common/dates/date-utils.ts +++ b/src/common/dates/date-utils.ts @@ -40,10 +40,21 @@ export function dateArgToISO(arg: DateConstructor["arguments"]) { return /^\d\d\d\d-\d\d-\d\d$/g.test(date) ? date : undefined; } +/** + * ISO 8601 date format (YYYY-MM-DD) in **UTC** timezone + */ export function toISO(date: Date): DayISO { return date.toISOString().slice(0, 10) as DayISO; } +/** + * ISO 8601 date format (YYYY-MM-DD) in **local** timezone + */ +export function toLocalISO(date: Date): DayISO { + // This works because Canada uses the YYYY-MM-DD format + return date.toLocaleDateString("en-CA") as DayISO; +} + export function fromISO(iso: DayISO) { return new Date(iso); } diff --git a/src/components/ebay-calendar/component.ts b/src/components/ebay-calendar/component.ts index 22603784f..73213ab15 100644 --- a/src/components/ebay-calendar/component.ts +++ b/src/components/ebay-calendar/component.ts @@ -6,6 +6,7 @@ import { getWeekdayInfo, offsetISO, toISO, + toLocalISO, type DayISO, } from "../../common/dates/date-utils"; import { localeDefault } from "../../common/dates"; @@ -67,7 +68,7 @@ class Calendar extends Marko.Component { onCreate(input: Input) { this.locale = input.locale; const { firstDayOfWeek, weekdayLabels } = getWeekdayInfo(input.locale); - const todayISO = toISO(new Date()); + const todayISO = toLocalISO(new Date()); this.state = { focusISO: null, baseISO: todayISO,