JavaScript:是否有一种方法来检测给定的日期在这样的格式是在过去的X天内?



我有一串这样格式化的时间戳

const dates = ['2021.6.01', '2021.6.11', '2021.9.02']

我想写一个util,它可以告诉我一个具有这种格式的日期是否在另一个日期的最后X天内。

例如,2021.6.102021.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
}))
}

相关内容

  • 没有找到相关文章

最新更新