javascript - 如何在 JavaScript 中获取给定当前日期的一周中所有日期的数组?

标签 javascript

我有工作日值(周日至周六为 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/

相关文章:

javascript - 如何使用 jsfiddle 在 javascript 中输出新行?

javascript - 在拖动或调整大小时禁用或更改功能

javascript - 覆盖流对象类型中的单个字段类型的通用方法

javascript - 错误: Permission denied to access property '$'

javascript - jQuery - 获取任何一组复选框的选中值

javascript - 如何从多个 url 获取数据并将其保存在数组中(React Native)

javascript - 是否可以在初始化后取消初始化 jQuery 插件?

javascript - 如何在 ESLint 中设置全局警告级别?

javascript - 如何在 JavaScript 中检查字符串是否包含字符串数组中的子字符串

javascript - 某些地方内联元素样式的奇怪过渡行为