From 64037e6a8cf303dcfd2b954f309bd9691f87fffc Mon Sep 17 00:00:00 2001 From: bcurtin144 <32525780+bcurtin144@users.noreply.github.com> Date: Sun, 3 Jan 2021 01:59:54 -0600 Subject: [PATCH] fix: escape last period to match only milliseconds (#1239) (#1295) --- src/constant.js | 2 +- test/parse.test.js | 30 ++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/constant.js b/src/constant.js index 22c1319e..875ef02b 100644 --- a/src/constant.js +++ b/src/constant.js @@ -26,5 +26,5 @@ export const FORMAT_DEFAULT = 'YYYY-MM-DDTHH:mm:ssZ' export const INVALID_DATE_STRING = 'Invalid Date' // regex -export const REGEX_PARSE = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?.?(\d+)?$/ +export const REGEX_PARSE = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?\.?(\d+)?$/ export const REGEX_FORMAT = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g diff --git a/test/parse.test.js b/test/parse.test.js index aecbaa89..501e213d 100644 --- a/test/parse.test.js +++ b/test/parse.test.js @@ -148,4 +148,34 @@ describe('REGEX_PARSE', () => { expect(dayjs(date).valueOf()).toBe(moment(date).valueOf()) expect(d.join('-')).toBe('2019-03-25T06:41:00.999999999-2019-03-25-06-41-00-999999999') }) + it('20210102T012345', () => { + const date = '20210102T012345' + const d = date.match(REGEX_PARSE) + expect(dayjs(date).valueOf()).toBe(moment(date).valueOf()) + expect(d.join('-')).toBe('20210102T012345-2021-01-02-01-23-45-') + }) + it('2021-01-02T01:23', () => { + const date = '2021-01-02T01:23' + const d = date.match(REGEX_PARSE) + expect(dayjs(date).valueOf()).toBe(moment(date).valueOf()) + expect(d.join('-')).toBe('2021-01-02T01:23-2021-01-02-01-23--') + }) + it('2021-01-02T01:23:45', () => { + const date = '2021-01-02T01:23:45' + const d = date.match(REGEX_PARSE) + expect(dayjs(date).valueOf()).toBe(moment(date).valueOf()) + expect(d.join('-')).toBe('2021-01-02T01:23:45-2021-01-02-01-23-45-') + }) + it('2021-01-02T01:23:45-0500 (no regex match)', () => { + const date = '2021-01-02T01:23:45-0500' + const d = date.match(REGEX_PARSE) + expect(dayjs(date).valueOf()).toBe(moment(date).valueOf()) + expect(d).toBe(null) + }) + it('2021-01-02T01:23:45Z (no regex match)', () => { + const date = '2021-01-02T01:23:45Z' + const d = date.match(REGEX_PARSE) + expect(dayjs(date).valueOf()).toBe(moment(date).valueOf()) + expect(d).toBe(null) + }) })