diff --git a/src/plugin/customParseFormat/index.js b/src/plugin/customParseFormat/index.js index c7082833c..61f4cfb1c 100644 --- a/src/plugin/customParseFormat/index.js +++ b/src/plugin/customParseFormat/index.js @@ -1,6 +1,6 @@ import { u } from '../localizedFormat/utils' -const formattingTokens = /(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g +const formattingTokens = /(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|WW?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g const match1 = /\d/ // 0 - 9 const match2 = /\d\d/ // 00 - 99 @@ -100,6 +100,8 @@ const expressions = { }], w: [match1to2, addInput('week')], ww: [match2, addInput('week')], + W: [match1to2, addInput('week')], + WW: [match2, addInput('week')], M: [match1to2, addInput('month')], MM: [match2, addInput('month')], MMM: [matchWord, function (input) { diff --git a/test/plugin/customParseFormat.test.js b/test/plugin/customParseFormat.test.js index fb4030176..d3237041e 100644 --- a/test/plugin/customParseFormat.test.js +++ b/test/plugin/customParseFormat.test.js @@ -8,10 +8,12 @@ import customParseFormat from '../../src/plugin/customParseFormat' import advancedFormat from '../../src/plugin/advancedFormat' import localizedFormats from '../../src/plugin/localizedFormat' import weekOfYear from '../../src/plugin/weekOfYear' +import isoWeek from '../../src/plugin/isoWeek' dayjs.extend(customParseFormat) dayjs.extend(localizedFormats) dayjs.extend(weekOfYear) // test parse w, ww +dayjs.extend(isoWeek) // test parse W, WW beforeEach(() => { MockDate.set(new Date()) @@ -452,11 +454,17 @@ it('parse Q, [Q]', () => { expect(dayjs(input4, format).valueOf()).toBe(moment(input4, format).valueOf()) }) -it('parse w, ww', () => { +it('parse w, ww, W, WW', () => { const input = '2024-w1' const format1 = 'YYYY-[w]w' expect(dayjs(input, format1).format(format1)).toBe(input) const input2 = '2024-w32' const format2 = 'YYYY-[w]ww' - expect(dayjs(input2, format2).format(format1)).toBe(input2) + expect(dayjs(input2, format2).format(format2)).toBe(input2) + const input3 = '2024-w1' + const format3 = 'YYYY-[w]W' + expect(dayjs(input3, format3).format(format3)).toBe(input3) + const input4 = '2024-w33' + const format4 = 'YYYY-[w]WW' + expect(dayjs(input4, format4).format(format4)).toBe(input4) })