From 20be5550944d3b020c5516b4381924d0ef2943ab Mon Sep 17 00:00:00 2001 From: iamkun <5992643+manre57@users.noreply.github.com> Date: Mon, 8 Apr 2019 18:13:16 +0800 Subject: [PATCH] fix: Fix `.add` day/week decimal rouding bug --- src/index.js | 2 +- test/manipulate.test.js | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/index.js b/src/index.js index 8c8841a..347c08d 100644 --- a/src/index.js +++ b/src/index.js @@ -243,7 +243,7 @@ class Dayjs { const unit = Utils.p(units) const instanceFactorySet = (n) => { const date = new Date(this.$d) - date.setDate(date.getDate() + (n * number)) + date.setDate(date.getDate() + Math.round(n * number)) return Utils.w(date, this) } if (unit === C.M) { diff --git a/test/manipulate.test.js b/test/manipulate.test.js index eb83f5d..5fe28cb 100644 --- a/test/manipulate.test.js +++ b/test/manipulate.test.js @@ -64,6 +64,13 @@ it('Add Time days', () => { expect(dayjs().add('2', 'years').valueOf()).toBe(moment().add('2', 'years').valueOf()) }) +it('Add Time with decimal', () => { + expect(dayjs().add(0.4, 'day').valueOf()).toBe(moment().add(0.4, 'day').valueOf()) + expect(dayjs().add(0.5, 'day').valueOf()).toBe(moment().add(0.5, 'day').valueOf()) + expect(dayjs().add(0.4, 'week').valueOf()).toBe(moment().add(0.4, 'week').valueOf()) + expect(dayjs().add(0.5, 'week').valueOf()).toBe(moment().add(0.5, 'week').valueOf()) +}) + it('Subtract Time days', () => { expect(dayjs().subtract(1, 'days').valueOf()).toBe(moment().subtract(1, 'days').valueOf()) })