From: Ash Date: Thu, 13 Dec 2018 05:12:16 +0000 (+0000) Subject: [feature] Fix #4518: Add support to add/subtract ISO weeks (#4563) X-Git-Tag: 2.23.0~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=155ce4bf2f6855a0a79e7bc611e285cefd777ebf;p=thirdparty%2Fmoment.git [feature] Fix #4518: Add support to add/subtract ISO weeks (#4563) --- diff --git a/src/lib/duration/constructor.js b/src/lib/duration/constructor.js index 2d86d5e2c..894ba1dc6 100644 --- a/src/lib/duration/constructor.js +++ b/src/lib/duration/constructor.js @@ -7,7 +7,7 @@ export function Duration (duration) { years = normalizedInput.year || 0, quarters = normalizedInput.quarter || 0, months = normalizedInput.month || 0, - weeks = normalizedInput.week || 0, + weeks = normalizedInput.week || normalizedInput.isoWeek || 0, days = normalizedInput.day || 0, hours = normalizedInput.hour || 0, minutes = normalizedInput.minute || 0, diff --git a/src/test/moment/add_subtract.js b/src/test/moment/add_subtract.js index 6b1e62595..3f21298cd 100644 --- a/src/test/moment/add_subtract.js +++ b/src/test/moment/add_subtract.js @@ -368,3 +368,13 @@ test('add decimal values of days and months', function (assert) { assert.equal(moment([2016, 0,1]).add(1.6, 'years').format('YYYY-MM-DD'), '2017-08-01', 'add 1.6 years becomes 1.6*12 = 19.2, round, 19 months'); assert.equal(moment([2016,0,1]).add(1.1, 'quarters').format('YYYY-MM-DD'), '2016-04-01', 'add 1.1 quarters 1.1*3=3.3, round, 3 months'); }); + +test('add/subtract ISO week', function (assert) { + assert.equal(moment([2016,3,15]).subtract(1, 'W').date(), 8, 'subtract 1 iso week short'); + assert.equal(moment([2016,3,15]).subtract(1, 'isoweek').date(), 8, 'subtract 1 iso week long singular'); + assert.equal(moment([2016,3,15]).subtract(1, 'isoweeks').date(), 8, 'subtract 1 iso weeks long'); + + assert.equal(moment([2016,3,15]).add(1, 'W').date(), 22, 'add 1 iso week short'); + assert.equal(moment([2016,3,15]).add(1, 'isoweek').date(), 22, 'add 1 week long singular'); + assert.equal(moment([2016,3,15]).add(1, 'isoweeks').date(), 22, 'add 1 weeks long'); +});