From 62b092d9f9a3db5506ef01f798bdf211f163f53f Mon Sep 17 00:00:00 2001 From: iamkun Date: Fri, 17 Apr 2020 10:36:07 +0800 Subject: [PATCH] fix: Fix Duration plugin get seconds (#867) --- src/plugin/duration/index.js | 8 ++++++-- test/plugin/duration.test.js | 2 ++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/plugin/duration/index.js b/src/plugin/duration/index.js index 835456b24..9d3361f4e 100644 --- a/src/plugin/duration/index.js +++ b/src/plugin/duration/index.js @@ -75,7 +75,9 @@ class Duration { $ms %= MILLISECONDS_A_HOUR this.$d.minutes = Math.floor($ms / MILLISECONDS_A_MINUTE) $ms %= MILLISECONDS_A_MINUTE - this.$d.seconds = $ms / MILLISECONDS_A_SECOND + this.$d.seconds = Math.floor($ms / MILLISECONDS_A_SECOND) + $ms %= MILLISECONDS_A_SECOND + this.$d.milliseconds = $ms } toISOString() { @@ -111,8 +113,10 @@ class Duration { const pUnit = prettyUnit(unit) if (pUnit === 'milliseconds') { base %= 1000 - } else { + } else if (pUnit === 'weeks') { base = Math.floor(base / unitToMS[pUnit]) + } else { + base = this.$d[pUnit] } return base } diff --git a/test/plugin/duration.test.js b/test/plugin/duration.test.js index 41be206d0..350053a90 100644 --- a/test/plugin/duration.test.js +++ b/test/plugin/duration.test.js @@ -134,6 +134,7 @@ describe('Seconds', () => { expect(dayjs.duration(500).seconds()).toBe(0) expect(dayjs.duration(1500).seconds()).toBe(1) expect(dayjs.duration(15000).seconds()).toBe(15) + expect(dayjs.duration(61000).seconds()).toBe(1) // 1 minute 1 second expect(dayjs.duration(500).asSeconds()).toBe(0.5) expect(dayjs.duration(1500).asSeconds()).toBe(1.5) expect(dayjs.duration(15000).asSeconds()).toBe(15) @@ -141,6 +142,7 @@ describe('Seconds', () => { describe('Minutes', () => { expect(dayjs.duration(100000).minutes()).toBe(1) + expect(dayjs.duration(61000).minutes()).toBe(1) // 1 minute 1 second expect(dayjs.duration(100000).asMinutes().toFixed(2)).toBe('1.67') })