function formatDig(num) { return num > 9 ? "" + num : "0" + num; } function formatDate(mill) { const y = new Date(mill); let raws = [formatDig(y.getMonth() + 1), formatDig(y.getDate()), ""]; let format = ["月", "日"]; // return String.raw({ raw: raws }, ...format); return formatDig(y.getMonth() + 1) + formatDig(y.getDate()) } function *createWeeks(year) { const oneDayTime = 24 * 3600 * 1000; let start = new Date(year, 0, 1); let end = new Date(year, 11, 31); let firstDay = start.getDay() || 7; let lastDay = end.getDay() || 7; let startTime = +start; let endTime = startTime + (7 - firstDay) * oneDayTime; let _endTime = end - (7 - lastDay) * oneDayTime; yield [startTime, endTime]; startTime = endTime + oneDayTime; endTime = endTime + 7 * oneDayTime; while (endTime < _endTime) { yield [startTime, endTime]; startTime = endTime + oneDayTime; endTime = endTime + 7 * oneDayTime; } yield [startTime, +end]; } export function getWeekList() { const year = [2021, 2022, 2023, 2024, 2025, 2026,2027,2028]; let arr = []; for (let j = 0; j < year.length; j++) { console.log(year[j]); let obj = { text: year[j] + "年", value: year[j], children: [], }; let index = 1; for (let i of createWeeks(year[j])) { let start = i[0]; let end = i[1]; let obj1 = { text: `第${formatDig(index++)}周 ${formatDate(start)}-${formatDate( end )}`, value: year[j]+formatDate(start) + "-" + year[j] + formatDate(end) }; // console.log( // `第${formatDig(index++)}周 ${formatDate(start)}-${formatDate(end)}` // ); obj.children.push(obj1); } arr.push(obj); } return arr; }
JS 根据年生成周数据
58 min read