From e4d5e612f19140b9ba3b17d7110b09ad6cae3708 Mon Sep 17 00:00:00 2001 From: Ash Searle Date: Fri, 13 Jul 2018 22:57:20 +0100 Subject: [PATCH 1/2] [bugfix] Fix #4698: Use ISO WeekYear for HTML5_FMT.WEEK --- src/moment.js | 2 +- src/test/moment/format.js | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/moment.js b/src/moment.js index 9516d285db..89afdf71c3 100644 --- a/src/moment.js +++ b/src/moment.js @@ -88,7 +88,7 @@ moment.HTML5_FMT = { TIME: 'HH:mm', // TIME_SECONDS: 'HH:mm:ss', // TIME_MS: 'HH:mm:ss.SSS', // - WEEK: 'YYYY-[W]WW', // + WEEK: 'GGGG-[W]WW', // MONTH: 'YYYY-MM' // }; diff --git a/src/test/moment/format.js b/src/test/moment/format.js index 07ed379443..0925f653d8 100644 --- a/src/test/moment/format.js +++ b/src/test/moment/format.js @@ -5,16 +5,16 @@ import moment from '../../moment'; module('format'); test('format using constants', function (assert) { - var m = moment('2017-09-01T23:40:40.678'); - assert.equal(m.format(moment.HTML5_FMT.DATETIME_LOCAL), '2017-09-01T23:40', 'datetime local format constant'); - assert.equal(m.format(moment.HTML5_FMT.DATETIME_LOCAL_SECONDS), '2017-09-01T23:40:40', 'datetime local format constant'); - assert.equal(m.format(moment.HTML5_FMT.DATETIME_LOCAL_MS), '2017-09-01T23:40:40.678', 'datetime local format constant with seconds and millis'); - assert.equal(m.format(moment.HTML5_FMT.DATE), '2017-09-01', 'date format constant'); + var m = moment('2016-01-02T23:40:40.678'); + assert.equal(m.format(moment.HTML5_FMT.DATETIME_LOCAL), '2016-01-02T23:40', 'datetime local format constant'); + assert.equal(m.format(moment.HTML5_FMT.DATETIME_LOCAL_SECONDS), '2016-01-02T23:40:40', 'datetime local format constant'); + assert.equal(m.format(moment.HTML5_FMT.DATETIME_LOCAL_MS), '2016-01-02T23:40:40.678', 'datetime local format constant with seconds and millis'); + assert.equal(m.format(moment.HTML5_FMT.DATE), '2016-01-02', 'date format constant'); assert.equal(m.format(moment.HTML5_FMT.TIME), '23:40', 'time format constant'); assert.equal(m.format(moment.HTML5_FMT.TIME_SECONDS), '23:40:40', 'time format constant with seconds'); assert.equal(m.format(moment.HTML5_FMT.TIME_MS), '23:40:40.678', 'time format constant with seconds and millis'); - assert.equal(m.format(moment.HTML5_FMT.WEEK), '2017-W35', 'week format constant'); - assert.equal(m.format(moment.HTML5_FMT.MONTH), '2017-09', 'month format constant'); + assert.equal(m.format(moment.HTML5_FMT.WEEK), '2015-W53', 'week format constant'); + assert.equal(m.format(moment.HTML5_FMT.MONTH), '2016-01', 'month format constant'); }); test('format YY', function (assert) { From 3fa1520bbdb4121fdd6b8c40b70a392b534e1fc2 Mon Sep 17 00:00:00 2001 From: Ash Searle Date: Wed, 31 Oct 2018 10:17:31 +0000 Subject: [PATCH 2/2] [bugfix] Fix #4698: Added regression tests --- src/test/moment/format.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/test/moment/format.js b/src/test/moment/format.js index 0925f653d8..c2a507d79c 100644 --- a/src/test/moment/format.js +++ b/src/test/moment/format.js @@ -536,3 +536,8 @@ test('Y token', function (assert) { assert.equal(moment('9999-01-01', 'Y-MM-DD', true).format('Y'), '9999', 'format 9999 with Y'); assert.equal(moment('10000-01-01', 'Y-MM-DD', true).format('Y'), '+10000', 'format 10000 with Y'); }); + +test('HTML5_FMT.WEEK', function (assert) { + assert.equal(moment('2004-W01', moment.HTML5_FMT.WEEK).format(moment.HTML5_FMT.WEEK), '2004-W01', 'issue #4698 regression'); + assert.equal(moment('2019-W01').format(moment.HTML5_FMT.WEEK), '2019-W01', 'issue #4833 regression'); +});