From f856b17f0291df70ac7c318ef81d19875726cf0e Mon Sep 17 00:00:00 2001 From: Katherine Date: Thu, 6 Mar 2025 18:16:08 +0800 Subject: [PATCH] fix: timezone-related issue causing one hour less in date picker (#6359) * fix: timezone-related issue causing one hour less in date picker * fix: bug * fix: build error --- .../client/src/schema-component/antd/date-picker/util.ts | 5 ++++- packages/core/utils/src/date.ts | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/core/client/src/schema-component/antd/date-picker/util.ts b/packages/core/client/src/schema-component/antd/date-picker/util.ts index 939a2644c1..af682e09eb 100644 --- a/packages/core/client/src/schema-component/antd/date-picker/util.ts +++ b/packages/core/client/src/schema-component/antd/date-picker/util.ts @@ -82,6 +82,8 @@ const handleChangeOnFilter = (value, picker, showTime) => { return value; }; export const handleDateChangeOnForm = (value, dateOnly, utc, picker, showTime, gmt) => { + // @ts-ignore + const currentTimeZone = dayjs.tz.guess(); const format = showTime ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD'; if (!value) { return value; @@ -97,7 +99,8 @@ export const handleDateChangeOnForm = (value, dateOnly, utc, picker, showTime, g return dayjs(value).startOf(picker).toISOString(); } const formattedDate = dayjs(value).format(format); - return dayjs(formattedDate).toISOString(); + // @ts-ignore + return dayjs(formattedDate).tz(currentTimeZone, true).toISOString(); } if (showTime) { return dayjs(value).format(format); diff --git a/packages/core/utils/src/date.ts b/packages/core/utils/src/date.ts index c68cdf8154..b7da58600b 100644 --- a/packages/core/utils/src/date.ts +++ b/packages/core/utils/src/date.ts @@ -81,7 +81,7 @@ const toMoment = (val: any, options?: Str2momentOptions) => { if (!val) { return; } - const offset = options.utcOffset !== undefined ? options.utcOffset : -1 * new Date().getTimezoneOffset(); + const offset = options.utcOffset; const { gmt, picker, utc = true } = options; if (dayjs(val).isValid()) { if (!utc) { @@ -94,7 +94,7 @@ const toMoment = (val: any, options?: Str2momentOptions) => { if (gmt) { return dayjs(val).utcOffset(0); } - return dayjs(val).utcOffset(offsetFromString(offset)); + return offset ? dayjs(val).utcOffset(offsetFromString(offset)) : dayjs(val); } else { return convertQuarterToFirstDay(val); }