如何在星期六和星期日的数组中仅添加月中的日期?
用户设置了月份和年份,在这个月我得到了日期。
例如:
2018年3月
1 2 5 6 7 8 9 12 13 14 15 16 19 20 21 22 23 26 27 28 29 30
答案 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
方法执行此操作,并注明0
和6
分别代表星期日和星期六。因此,只需迭代一个月的所有日子,并排除那些周末的日子:
// 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));
该功能应适用于任何年份和月份。