From be1c9c4c8898ba78370acd7ca97c47f6a7bc11c8 Mon Sep 17 00:00:00 2001 From: Becky Conning Date: Tue, 26 Jan 2021 15:49:01 +0000 Subject: [PATCH] Added Zulu support to customParseFormat --- src/plugin/customParseFormat/index.js | 3 ++- test/plugin/customParseFormat.test.js | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/plugin/customParseFormat/index.js b/src/plugin/customParseFormat/index.js index a6b41ef1a..d9251dbde 100644 --- a/src/plugin/customParseFormat/index.js +++ b/src/plugin/customParseFormat/index.js @@ -8,13 +8,14 @@ const match3 = /\d{3}/ // 000 - 999 const match4 = /\d{4}/ // 0000 - 9999 const match1to2 = /\d\d?/ // 0 - 99 const matchSigned = /[+-]?\d+/ // -inf - inf -const matchOffset = /[+-]\d\d:?(\d\d)?/ // +00:00 -00:00 +0000 or -0000 +00 +const matchOffset = /[+-]\d\d:?(\d\d)?|Z/ // +00:00 -00:00 +0000 or -0000 +00 or Z const matchWord = /\d*[^\s\d-_:/()]+/ // Word let locale = {} function offsetFromString(string) { if (!string) return 0 + if (string === 'Z') return 0 const parts = string.match(/([+-]|\d\d)/g) const minutes = +(parts[1] * 60) + (+parts[2] || 0) return minutes === 0 ? 0 : parts[0] === '+' ? -minutes : minutes // eslint-disable-line no-nested-ternary diff --git a/test/plugin/customParseFormat.test.js b/test/plugin/customParseFormat.test.js index 841b11d8b..b6e06a7d9 100644 --- a/test/plugin/customParseFormat.test.js +++ b/test/plugin/customParseFormat.test.js @@ -109,6 +109,13 @@ describe('Timezone Offset', () => { expect(result.valueOf()).toBe(moment(input, format).valueOf()) expect(result.valueOf()).toBe(1606820400000) }) + it('zulu', () => { + const input = '2021-01-26T15:38:43.000Z' + const format = 'YYYY-MM-DDTHH:mm:ss.SSSZ' + const result = dayjs(input, format) + expect(result.valueOf()).toBe(moment(input, format).valueOf()) + expect(result.valueOf()).toBe(1611675523000) + }) it('no timezone format token should parse in local time', () => { const input = '2020-12-01T20:00:00+01:00' const format = 'YYYY-MM-DD[T]HH:mm:ss' @@ -347,3 +354,4 @@ it('parse a string for MMM month format with underscore delimiter', () => { const format2 = 'DD_MMM_YYYY_hhmmss' expect(dayjs(input2, format2).valueOf()).toBe(moment(input2, format2).valueOf()) }) +