我有一串这样格式化的时间戳
const dates = ['2021.6.01', '2021.6.11', '2021.9.02']
我想写一个util,它可以告诉我一个具有这种格式的日期是否在另一个日期的最后X天内。
例如,2021.6.10
在2021.6.12
的最近7天内,而2021.6.01
不在2021.6.12
的最近7天内。
我认为API接口将是,但请随意建议一个更好的命名
function isWithinTheLastDays(originalDate, date, days)
我发现手工实现它真的很棘手,而且有很多边缘情况。
使用Date
构造函数解析日期,减去两个日期并将毫秒差转换为天数(通过除以86400000),然后检查它是否小于或等于days
:
function isWithinTheLastDays(originalDate, date, days){
return (new Date(date) - new Date(originalDate)) / 86400000 <= days;
}
console.log(isWithinTheLastDays('2021.6.10', '2021.6.12', 7)) //2 day diff
console.log(isWithinTheLastDays('2021.6.10', '2021.6.17', 7)) //7 day diff
console.log(isWithinTheLastDays('2021.6.10', '2021.6.18', 7)) //8 day diff
将其转换为Unix时间戳并减去它
function isWithinTheLastDays(originalDate, date, days){
if(Math.abs(
new Date(date).getTime()/1000
- new Date(originalDate).getTime()/1000
)/60/60/24 >= days){
return true;
}else{
return false;
};
}
你可以试试:
注意:如果日期在设置的日期
之后和之前的X天,则返回true
const dates = ['2021.08.26', '2021.6.11', '2021.9.02']
function isWithinDays({ originalDate, date, range }) {
return parseInt(((new Date(date) - new Date(originalDate)) / (1000 * 60 * 60 * 24)), 10) <= range && parseInt(((new Date(date) - new Date(originalDate)) / (1000 * 60 * 60 * 24)), 10) >= 0 ? true : false
}
for (var i = 0; i < dates.length; i++) {
console.log(isWithinDays({
originalDate: dates[i],
date: new Date('2021-08-27'),
range: 10
}))
}