Skip to content

Commit 102b4cd

Browse files
committed
refactor(Calendar): improve date parsing
1 parent b6091d6 commit 102b4cd

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

js/src/util/calendar.js

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ const parseYearString = dateString => {
177177
return createDateFromYear(groups)
178178
}
179179

180-
return parseWithTimezoneOffset(yearString)
180+
return parseLocalDateString(yearString)
181181
}
182182

183183
/**
@@ -415,7 +415,7 @@ const parseDayString = (dateString, locale, includeTime) => {
415415

416416
if (hasDateSeparators && hasMultipleParts) {
417417
// Use fallback for complete date strings that don't match locale patterns
418-
return parseWithTimezoneOffset(dateString)
418+
return parseLocalDateString(dateString)
419419
}
420420

421421
// For incomplete input like "1" or "12", return null
@@ -438,15 +438,14 @@ const parseDayString = (dateString, locale, includeTime) => {
438438
}
439439

440440
/**
441-
* Parses a date string with timezone offset adjustment.
441+
* Parses a date string into a local Date object.
442442
* @param dateString - The date string to parse.
443-
* @returns The Date object with timezone offset applied, or null if invalid.
443+
* @returns The Date object in local timezone, or null if invalid.
444444
*/
445-
const parseWithTimezoneOffset = dateString => {
445+
const parseLocalDateString = dateString => {
446446
const _date = new Date(Date.parse(dateString))
447447
if (!Number.isNaN(_date.getTime())) {
448-
const userTimezoneOffset = _date.getTimezoneOffset() * 60_000
449-
return new Date(_date.getTime() + userTimezoneOffset)
448+
return _date
450449
}
451450

452451
return null
@@ -796,10 +795,16 @@ export const getMonthDetails = (year, month, firstDayOfWeek) => {
796795

797796
if ((index + 1) % 7 === 0) {
798797
const { weekNumber, year } = getISOWeekNumberAndYear(day.date)
799-
weeks.at(-1).week = { number: weekNumber, year }
798+
const lastWeek = weeks.at(-1)
799+
if (lastWeek) {
800+
lastWeek.week = { number: weekNumber, year }
801+
}
800802
}
801803

802-
weeks.at(-1).days.push(day)
804+
const lastWeek = weeks.at(-1)
805+
if (lastWeek) {
806+
lastWeek.days.push(day)
807+
}
803808
}
804809

805810
return weeks

0 commit comments

Comments
 (0)