From 16b34be05ce82dc72b4dcc53570d34c893beaf2a Mon Sep 17 00:00:00 2001 From: chenos Date: Fri, 5 Jan 2024 22:36:57 +0800 Subject: [PATCH] fix: date parse --- .../database/src/__tests__/value-parsers/date.test.ts | 3 +++ .../core/database/src/value-parsers/date-value-parser.ts | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/packages/core/database/src/__tests__/value-parsers/date.test.ts b/packages/core/database/src/__tests__/value-parsers/date.test.ts index 6f3918564..6b83e0ea9 100644 --- a/packages/core/database/src/__tests__/value-parsers/date.test.ts +++ b/packages/core/database/src/__tests__/value-parsers/date.test.ts @@ -58,6 +58,9 @@ describe('number value parser', () => { }; it('should be correct', () => { + expectValue('20231223').toBe(dayjs('2023-12-23 00:00:00.000').toISOString()); + expectValue('2023/12/23').toBe(dayjs('2023-12-23 00:00:00.000').toISOString()); + expectValue('2023-12-23').toBe(dayjs('2023-12-23 00:00:00.000').toISOString()); expectValue(42510).toBe('2016-05-20T00:00:00.000Z'); expectValue('42510').toBe('2016-05-20T00:00:00.000Z'); expectValue('2016-05-20T00:00:00.000Z').toBe('2016-05-20T00:00:00.000Z'); diff --git a/packages/core/database/src/value-parsers/date-value-parser.ts b/packages/core/database/src/value-parsers/date-value-parser.ts index 1f1fc11dd..085a912fc 100644 --- a/packages/core/database/src/value-parsers/date-value-parser.ts +++ b/packages/core/database/src/value-parsers/date-value-parser.ts @@ -11,6 +11,14 @@ function isNumeric(str: any) { export class DateValueParser extends BaseValueParser { async setValue(value: any) { + if (typeof value === 'string') { + const match = /^(\d{4})[-/]?(\d{2})[-/]?(\d{2})$/.exec(value); + if (match) { + const m = dayjs(`${match[1]}-${match[2]}-${match[3]} 00:00:00.000`); + this.value = m.toISOString(); + return; + } + } if (dayjs.isDayjs(value)) { this.value = value; } else if (isDate(value)) {