From 40bea40f47c4190ea929a71597ed9a4d7a7dac13 Mon Sep 17 00:00:00 2001 From: iamkun Date: Mon, 8 Apr 2019 17:55:30 +0800 Subject: [PATCH] fix: Fix relativeTime plugin Math.round bug * fix: Fix relativeTime plugin error Math.round bug * chore: add comment * chore: add 'day' will ignore decimal by dayjs at current version --- src/plugin/relativeTime/index.js | 5 +++-- test/plugin/relativeTime.test.js | 12 ++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/plugin/relativeTime/index.js b/src/plugin/relativeTime/index.js index 1ac51e431..6720d7590 100644 --- a/src/plugin/relativeTime/index.js +++ b/src/plugin/relativeTime/index.js @@ -37,14 +37,15 @@ export default (o, c, d) => { let out for (let i = 0; i < Tl; i += 1) { - const t = T[i] + let t = T[i] if (t.d) { result = isFrom ? d(input).diff(instance, t.d, true) : instance.diff(input, t.d, true) } - const abs = Math.ceil(Math.abs(result)) + const abs = Math.round(Math.abs(result)) if (abs <= t.r || !t.r) { + if (abs === 1) t = T[i - 1] // 1 minutes -> a minute out = loc[t.l].replace('%d', abs) break } diff --git a/test/plugin/relativeTime.test.js b/test/plugin/relativeTime.test.js index 2bc4a896e..fcf65ce4e 100644 --- a/test/plugin/relativeTime.test.js +++ b/test/plugin/relativeTime.test.js @@ -17,16 +17,28 @@ it('Time from X', () => { const T = [ [0, 'second'], // a few seconds [44, 'second'], // a few seconds + [44.4, 'second'], // a few seconds + [44.5, 'second'], // a minute [45, 'second'], // a minute [89, 'second'], // a minute + [89.4, 'second'], // a minute + [89.5, 'second'], // a minute [90, 'second'], // 2 minutes [44, 'minute'], // 44 minutes + [44.4, 'minute'], + [44.5, 'minute'], [45, 'minute'], // an hour [89, 'minute'], // an hour + [89.4, 'minute'], + [89.5, 'minute'], [90, 'minute'], // 2 hours [21, 'hour'], // 21 hours + [21.4, 'hour'], + [21.5, 'hour'], [22, 'hour'], // a day [35, 'hour'], // a day + [35.4, 'hour'], + [35.5, 'hour'], [36, 'hour'], // 2 days [25, 'day'], // 25 days [26, 'day'], // a month