From ce8e50269726f185e4f9ba34b238e5c7c48c278b Mon Sep 17 00:00:00 2001 From: fengbohan <1953356163@qq.com> Date: Fri, 25 Jul 2025 14:17:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9C=88=E5=91=A8=E6=9C=9F?= =?UTF-8?q?=EF=BC=8C=E5=BD=93=E6=9C=88=E6=8C=87=E5=BD=93=E5=A4=A9=E6=89=80?= =?UTF-8?q?=E5=9C=A8=E7=9A=84=E6=9C=88=E5=91=A8=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.js | 72 +++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 55 insertions(+), 17 deletions(-) diff --git a/main.js b/main.js index 820c023..2870187 100644 --- a/main.js +++ b/main.js @@ -14755,24 +14755,62 @@ function getCustomMonthRange(monthsAgo) { const now = new Date(); let year = now.getFullYear(); - let month = now.getMonth() - monthsAgo; - while (month < 0) { - month += 12; - year--; + let month = now.getMonth(); + let day = now.getDate(); + + // 如果今天是21号及以后,当前周期是本月21到下月20 + // 否则,周期是上月21到本月20 + if (day >= 21) { + month = month - monthsAgo; + let startYear = year, startMonth = month; + while (startMonth < 0) { + startMonth += 12; + startYear--; + } + let endYear = startYear, endMonth = startMonth + 1; + if (endMonth > 11) { + endMonth -= 12; + endYear++; + } + const firstDay = new Date(startYear, startMonth, 21); + const lastDay = new Date(endYear, endMonth, 20); + const formatLocal = (date) => { + return date.toLocaleDateString('en-CA', { + year: 'numeric', + month: '2-digit', + day: '2-digit' + }).replace(/\//g, '-'); + }; + return { + firstDay: formatLocal(firstDay), + lastDay: formatLocal(lastDay) + }; + } else { + month = month - monthsAgo - 1; + let startYear = year, startMonth = month; + while (startMonth < 0) { + startMonth += 12; + startYear--; + } + let endYear = startYear, endMonth = startMonth + 1; + if (endMonth > 11) { + endMonth -= 12; + endYear++; + } + const firstDay = new Date(startYear, startMonth, 21); + const lastDay = new Date(endYear, endMonth, 20); + const formatLocal = (date) => { + return date.toLocaleDateString('en-CA', { + year: 'numeric', + month: '2-digit', + day: '2-digit' + }).replace(/\//g, '-'); + }; + return { + firstDay: formatLocal(firstDay), + lastDay: formatLocal(lastDay) + }; } - const firstDay = new Date(year, month - 1, 21); - const lastDay = new Date(year, month, 20); - const formatLocal = (date) => { - return date.toLocaleDateString('en-CA', { - year: 'numeric', - month: '2-digit', - day: '2-digit' - }).replace(/\//g, '-'); - }; - return { - firstDay: formatLocal(firstDay), - lastDay: formatLocal(lastDay) - }; } // 创建菜单按钮