diff --git a/src/index.js b/src/index.js index 061ade178..3d2d0107a 100644 --- a/src/index.js +++ b/src/index.js @@ -357,13 +357,13 @@ class Dayjs { let result switch (unit) { case C.Y: - result = getMonth() / 12 + result = (getMonth() / 12) || diff break case C.M: - result = getMonth() + result = getMonth() || diff break case C.Q: - result = getMonth() / 3 + result = (getMonth() / 3) || diff break case C.W: result = (diff - zoneDelta) / C.MILLISECONDS_A_WEEK diff --git a/test/issues/issue2793.diff.test.js b/test/issues/issue2793.diff.test.js new file mode 100644 index 000000000..2b3d38034 --- /dev/null +++ b/test/issues/issue2793.diff.test.js @@ -0,0 +1,12 @@ +import dayjs from '../../src' + +describe('issue 2793 - diff with invalid date should return NaN', () => { + ['days', 'week', 'month', 'quarter', 'year', 'hour', 'minute', 'second'].forEach((unit) => { + it(`should return NaN for ${unit}`, () => { + const currentDate = dayjs() + const expiresOn = dayjs(null) + const diffDays = expiresOn.diff(currentDate, unit) + expect(diffDays).toBeNaN() + }) + }) +})