![](/img/trans.png)
[英]How to check if current date is same as date from list of dates in javascript?
[英]How do I filter the dates of the current week from a general date list in Javascript or Typescript?
我有一个包含多个日期的数组,并且我想从该数组返回一个仅包含属于当前星期的日期的数组。 我怎样才能做到这一点?
唯一困难的部分是找到一周的时间范围。 为此,您可以执行以下操作:
function getWeekDates() { let now = new Date(); let dayOfWeek = now.getDay(); //0-6 let numDay = now.getDate(); let start = new Date(now); //copy start.setDate(numDay - dayOfWeek); start.setHours(0, 0, 0, 0); let end = new Date(now); //copy end.setDate(numDay + (7 - dayOfWeek)); end.setHours(0, 0, 0, 0); return [start, end]; } let [start, end] = getWeekDates(); console.log(start.toLocaleString(), end.toLocaleString());
现在,要过滤它们:
function filterDatesByCurrentWeek(dates){ let [start, end] = getWeekDates(); return dates.filter(d => +d >= +start && +d < +end); }
这是假设您的日期是日期对象。 如果不是,则需要一种解析它们并获取date对象的方法。
这是使用filter的示例。
let outOfWeek = new Date();
outOfWeek.setDate(outOfWeek.getDate() + 7)
const dateList = [
new Date(),
outOfWeek
]
const monthDay = new Date().getDate();
const weekDay = new Date().getDay();
const daysToSunday = 7 - weekDay;
const daysFromSunday = weekDay;
const setDateToMidnight = (date) =>{
date.setHours(0);
date.setMinutes(0);
date.setSeconds(0);
date.setMilliseconds(0);
}
let maxDate = new Date();
maxDate.setDate(monthDay + daysToSunday);
setDateToMidnight(maxDate);
let minDate = new Date();
minDate.setDate(monthDay - daysFromSunday);
setDateToMidnight(minDate);
filteredDates = dateList.filter((date) => {
if (date.getTime() < maxDate.getTime() && date.getTime() >= minDate.getTime()) {
return true;
} else {
return false;
}
})
console.log(dateList);
console.log(filteredDates);
我建议使用像momentjs这样的库。
您可以通过执行以下操作轻松过滤数组
var currentDate = moment();
var allDates = [...];
var filtered = allDates.filter(date => moment(date).isSame(currentDate, 'week');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.