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) - }; } // 创建菜单按钮