From 990012ba0f1032a68761fe176e80bc760346d200 Mon Sep 17 00:00:00 2001 From: iamkun Date: Tue, 27 Oct 2020 15:18:45 +0800 Subject: [PATCH] fix: fix utc plugin diff bug in DST (#1171) fix #1097, fix #1021 --- src/plugin/utc/index.js | 3 +++ test/timezone.test.js | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/src/plugin/utc/index.js b/src/plugin/utc/index.js index 722ae552b..5fb049793 100644 --- a/src/plugin/utc/index.js +++ b/src/plugin/utc/index.js @@ -112,6 +112,9 @@ export default (option, Dayjs, dayjs) => { } const oldDiff = proto.diff proto.diff = function (input, units, float) { + if (this.$u === input.$u) { + return oldDiff.call(this, input, units, float) + } const localThis = this.local() const localInput = dayjs(input).local() return oldDiff.call(localThis, localInput, units, float) diff --git a/test/timezone.test.js b/test/timezone.test.js index 9c0926f96..13110166d 100644 --- a/test/timezone.test.js +++ b/test/timezone.test.js @@ -62,3 +62,11 @@ it('UTC and utcOffset', () => { expect(moment.utc(test2).utcOffset(-60).format()) .toBe(dayjs.utc(test2).utcOffset(-60).format()) }) + +it('UTC diff in DST', () => { + // DST till 2020-10-25 + const day1 = dayjs.utc('20201023') // in DST + const day2 = dayjs.utc('20201026') + expect(day1.diff(day2, 'd')) + .toBe(-3) +})