删除星期六和星期日

时间:2018-03-09 23:52:17

标签: javascript typescript

如何在星期六和星期日的数组中仅添加月中的日期?

用户设置了月份和年份,在这个月我得到了日期。

例如:

2018年3月

1 2 5 6 7 8 9 12 13 14 15 16 19 20 21 22 23 26 27 28 29 30

3 个答案:

答案 0 :(得分:2)

假设您有一年,一个月和本月的日期(日期):

const y = 2018
const m = 2 //(0 based)
const days = [1, 2, 3, 4, 5, 6, 7...]

现在您可以将日期数组映射到日期对象:

const dates = days.map(day => new Date(y, m, day))

现在您可以使用getDay()来过滤日期,这会返回星期几(基于0)

const filteredDates = dates.filter(date => date.getDay() !== 0 && date.getDay() !== 6)

现在您可以将日期映射回该月的日期

const filteredDays = filteredDates.map(date => date.getDate())
顺便说一下,你可以用一个内容写出所有这些内容:

const noSundaySaturday = (year, month, daysArray) =>
                    daysArray
                       .map(day => new Date(year, month, day))
                       .filter(date => date.getDay() !== 0 && date.getDay() !== 6)
                       .map(date => date.getDate())

答案 1 :(得分:0)

根据谓词过滤日期数组,该谓词询问当天是星期六(6)还是星期日(0)。

const dates = allDates.filter(date => date.getDay() != 6 && date.getDay() != 0)

答案 2 :(得分:0)

您可以使用getDay对象的Date方法执行此操作,并注明06分别代表星期日和星期六。因此,只需迭代一个月的所有日子,并排除那些周末的日子:

// March 2018
// March -> 2 (months are zero-indexed)

function getWeekdaysInMonth(year, month) {
    const days = [];

    let date = new Date(year, month, 1);
    while (date.getMonth() === month) {
        if (![0, 6].includes(date.getDay())) days.push(date.getDate());
        date.setDate(date.getDate() + 1);
    }
    
    return days;
}

console.log(getWeekdaysInMonth(2018, 2));

该功能应适用于任何年份和月份。