From 59805855a9ba25f3900d020dc9fad7c4fcdf9e42 Mon Sep 17 00:00:00 2001 From: MaysWind Date: Fri, 29 Jan 2021 00:56:36 +0800 Subject: [PATCH] optimize forward/backward date --- src/lib/utils.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/lib/utils.js b/src/lib/utils.js index 9b676d97..2b873270 100644 --- a/src/lib/utils.js +++ b/src/lib/utils.js @@ -138,18 +138,20 @@ function getThisYearLastUnixTime() { } function getShiftedDateRange(minTime, maxTime, scale) { - const minDateTime = parseDateFromUnixTime(minTime); - const maxDateTime = parseDateFromUnixTime(maxTime); + const minDateTime = parseDateFromUnixTime(minTime).set({ second: 0, millisecond: 0 }); + const maxDateTime = parseDateFromUnixTime(maxTime).set({ second: 59, millisecond: 999 }); - const isFirstTimeOfDay = getHour(minDateTime) === 0 && getMinute(minDateTime) === 0; - const isLastTimeOfDay = getHour(maxDateTime) === 23 && getMinute(maxDateTime) === 59; + const firstDayOfMonth = minDateTime.clone().startOf('month'); + const lastDayOfMonth = maxDateTime.clone().endOf('month'); - if (!isFirstTimeOfDay || !isLastTimeOfDay) { - const range = (maxTime - minTime + 1) * scale; + if (firstDayOfMonth.unix() === minDateTime.unix() && lastDayOfMonth.unix() === maxDateTime.unix()) { + const months = getMonth(maxDateTime) - getMonth(minDateTime) + 1; + const newMinDateTime = minDateTime.add(months * scale, 'months'); + const newMaxDateTime = newMinDateTime.clone().add(months, 'months').subtract(1, 'seconds'); return { - minTime: minTime + range, - maxTime: maxTime + range + minTime: newMinDateTime.unix(), + maxTime: newMaxDateTime.unix() }; }