From 01f84a1fa205b3fe493cb9422cab89dfaf97997a Mon Sep 17 00:00:00 2001 From: Ash Searle Date: Tue, 11 Jul 2017 19:46:43 +0100 Subject: [PATCH] Fix moment issue #3997 --- src/lib/moment/add-subtract.js | 8 ++++---- src/test/moment/duration.js | 7 +++++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/lib/moment/add-subtract.js b/src/lib/moment/add-subtract.js index b9e86a69d..e758b5d46 100644 --- a/src/lib/moment/add-subtract.js +++ b/src/lib/moment/add-subtract.js @@ -36,14 +36,14 @@ export function addSubtract (mom, duration, isAdding, updateOffset) { updateOffset = updateOffset == null ? true : updateOffset; - if (milliseconds) { - mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding); + if (months) { + setMonth(mom, get(mom, 'Month') + months * isAdding); } if (days) { set(mom, 'Date', get(mom, 'Date') + days * isAdding); } - if (months) { - setMonth(mom, get(mom, 'Month') + months * isAdding); + if (milliseconds) { + mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding); } if (updateOffset) { hooks.updateOffset(mom, days || months); diff --git a/src/test/moment/duration.js b/src/test/moment/duration.js index c7e0ea377..624d77787 100644 --- a/src/test/moment/duration.js +++ b/src/test/moment/duration.js @@ -611,6 +611,13 @@ test('add', function (assert) { assert.equal(d.add({h: 23, m: 59})._milliseconds, 23 * 60 * 60 * 1000 + 59 * 60 * 1000 + 10000, 'Add hour:minute'); }); +test('add to moment', function (assert) { + var d = moment.duration({months: 1, seconds: -1}); + var m = moment('2017-03-01').add(d); + assert.equal(m.month(), 2, 'Adds months before time'); + assert.equal(m.date(), 31, 'Adds time after months'); +}); + test('add and bubble', function (assert) { var d; -- 2.47.2