我有一个日期范围
日期范例:
const startDate = "2022-06-02";
const endDate = "2022-06-20";
我想获取那些日期,在提供的日期数组中,它们落在开始日期和结束日期之间。
例如,日期数组:
["tuesday", "friday", "saturday"]
预期结果是:
2022-06-03
2022-06-04
2022-06-07
2022-06-10
2022-06-11
2022-06-14
2022-06-17
2022-06-18
有人能帮我解决这个逻辑吗?
我尝试的方法很丑陋,我在日期范围上放了一个循环,并获取了所有日期的列表,然后再放一个循环来获取每个日期的星期几名称,并将每个星期几名称与一个包含星期几名称的数组进行比较,最后将该日期推送到新数组中。
以下是代码(它完美地工作),但我需要更好的解决方案:
function getDaysArray(start, end) {
for(var arr=[],dt=new Date(start); dt<=new Date(end); dt.setDate(dt.getDate()+1)){
arr.push(helperClass.getDateTime(new Date(dt)).date);
}
return arr;
}
function getDayName (dateStr, locale){
var date = new Date(dateStr);
return date.toLocaleDateString(locale, { weekday: 'long' });
}
var days = ["tuesday", "friday", "saturday"];
var getAllDates = getDaysArray("2022-06-02", "2022-06-20");
var getDates = [];
for(var i = 0; i < getAllDates.length; i++){
if(days.includes(getDayName(getAllDates[i]).toLowerCase())){
getDates.push(getAllDates[i])
}
}
getDay
的值进行过滤即可。 - Heretic Monkey