我有工作日值(周日至周六为 0-6)...如何获取天数数组(从给定一周的周日开始?
这是我正在尝试做的事情:
用户单击一天(即:5 月 10 日),它会生成本周的日期数组:
function selectWeek(date) {
selectedWeek = [];
let d = new Date(date.key);
console.log(d);
console.log(date.weekday, 'weekday');
console.log(date);
for (let i = 0; i < date.weekday; i++) {
console.log(i, 'pre');
let currD = d.setDate(d.getDate() - i).toString();
console.log(currD);
selectedWeek.push(currD);
}
for (let i = date.weekday; i < 7; i++) {
console.log(i, 'post');
selectedWeek.push(d.setDate(d.getDate() + i).toString());
}
console.log(selectedWeek);
}
我需要周日到周六的日期对象。
我没有使用日期库,所以更喜欢普通的 JavaScript 解决方案。
最佳答案
创建一个包含 7 个元素的数组,减去工作日并添加索引为日期:
function selectWeek(date) {
return Array(7).fill(new Date(date)).map((el, idx) =>
new Date(el.setDate(el.getDate() - el.getDay() + idx)))
}
const date = new Date();
console.log(selectWeek(date));
我正在使用
fill(new Date(date))
创建副本而不修改参数。 您可以使用相同的概念获取一个月中的天数:
function selectMonth(date) {
return Array(31).fill(new Date(date)).map((el, idx) =>
new Date(el.setDate(1 + idx))).filter(el => el.getMonth() === date.getMonth());
}
const date = new Date();
console.log(selectMonth(date));
关于javascript - 如何在 JavaScript 中获取给定当前日期的一周中所有日期的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71179131/