0
点赞
收藏
分享

微信扫一扫

前端基础(三十):自定义周度计算


需求

实现

let weeks = [];
for (let i = 1970; i <= 2060; i++) {

let year = i;
let date = new Date(`${year}-1-1`);

let obj = {
label: year,
children: [],
}

// 当前年第一个周一日期的时间戳
let time;
if (date.getDay() === 1) {
time = new Date(`${year}-1-${date.getDay()} 00:00:00`).getTime();
} else if (date.getDay() > 4) {
time = new Date(`${year}-1-${9 - date.getDay()} 00:00:00`).getTime();
} else if (date.getDay() <= 4) {
time = new Date(`${year}-1-${9 - date.getDay()} 00:00:00`).getTime() - 7 * 24 * 3600000;
}

let count = 0;

for (let j = 1; j <= 53; j++) {

let startTime = time + (j - 1) * 7 * 24 * 3600000;
let start = new Date(startTime);
let endTime = startTime + 6 * 24 * 3600000;
let end = new Date(endTime);

if (j === 1) {
if (
(startTime - new Date(`${year}-1-1 00:00:00`).getTime() <= 3 * 24 * 3600000)
&&
(startTime - new Date(`${year}-1-1 00:00:00`).getTime() > 0)
) {
count = 1;
} else {
count = 0;
}
}
if (j === 52 || j === 53) {
if (new Date(`${year}-12-31 00:00:00`).getTime() - startTime < 4 * 24 * 3600000) {
break;
}
}

obj.children.push({
label: `week${count + j}`,
start: `${start.getFullYear()}/${start.getMonth() + 1}/${start.getDate()}`,
end: `${end.getFullYear()}/${end.getMonth() + 1}/${end.getDate()}`
})
}

weeks.push(obj)
}
console.log(weeks);


举报

相关推荐

0 条评论