From b1a02942c5238203aaa04ce9a074c73742324ab7 Mon Sep 17 00:00:00 2001 From: Stefano Borghi Date: Fri, 2 Oct 2020 09:49:39 -0700 Subject: [PATCH] fix: support dayjs.add(Duration), dayjs.subtract(Duration) (#1099) --- src/plugin/duration/index.js | 9 +++++++++ test/plugin/duration.test.js | 6 ++++++ 2 files changed, 15 insertions(+) diff --git a/src/plugin/duration/index.js b/src/plugin/duration/index.js index 1c07b1606..48ceadd8f 100644 --- a/src/plugin/duration/index.js +++ b/src/plugin/duration/index.js @@ -177,4 +177,13 @@ export default (option, Dayjs, dayjs) => { return wrapper(input, { $l }, unit) } dayjs.isDuration = isDuration + + const oldAdd = Dayjs.prototype.add + Dayjs.prototype.add = function (addition, units) { + if (isDuration(addition)) { + addition = addition.asMilliseconds() + units = 'ms' + } + return oldAdd.bind(this)(addition, units) + } } diff --git a/test/plugin/duration.test.js b/test/plugin/duration.test.js index f26c78c72..a85accf31 100644 --- a/test/plugin/duration.test.js +++ b/test/plugin/duration.test.js @@ -139,6 +139,12 @@ describe('Add', () => { expect(a.add({ days: 5 }).days()).toBe(6) }) +describe('Add duration', () => { + const a = dayjs('2020-10-01') + const days = dayjs.duration(2, 'days') + expect(a.add(days).format('YYYY-MM-DD')).toBe('2020-10-03') +}) + describe('Subtract', () => { const a = dayjs.duration(3, 'days') const b = dayjs.duration(2, 'days')