javascript - 日期之间每 X 天验证一次的功能
问题描述
我有两个 Date 对象。我需要一个函数来检查两个日期之间的天数是否与“每 X 天”匹配。因此,如果日期是 5 月 10 日和 13 日或 5 月 10 日和 5 月 19 日,如果我每 3 天查询一次,函数将返回 true。但如果我每 2 天查询一次,它会返回 false。
就像是
function validateGap(date1, date2, numberOfDays) {//...return true or false}
date1 = new Date("May 10, 2020 00:00:00"),
date2 = new Date("May 13, 2020 00:00:00");
validateGap(date1, date2, 3) // = TRUE
validateGap(date1, date2, 2) // = FALSE
date1 = new Date("May 10, 2020 00:00:00"),
date2 = new Date("May 22, 2020 00:00:00");
validateGap(date1, date2, 5) // = FALSE
validateGap(date1, date2, 4) // = TRUE
等等。
更新:我想出了这个。它肯定不是最注重性能的解决方案,但它确实有效。
function validateGap(date1, date2, numberOfDays) {
while (date1 <= date2) {
date1.setDate(date1.getDate()+numberOfDays);
if (date1.valueOf() === date2.valueOf()) return true;
}
return false;
}
date1 = new Date("May 10, 2020 00:00:00"),
date2 = new Date("May 13, 2020 00:00:00");
validateGap(date1, date2, 2); // FALSE
validateGap(date1, date2, 3); // TRUE
解决方案
这测试至少日期1和日期2之间的天数......希望这是你需要的......
我忽略validateGap(date1, date2, 4) // = TRUE
了,因为我看不到这背后的规则,如果你澄清一下,我可以合并它......
function validateGap(date1, date2, numberOfDays) {
let diff = date1.valueOf() - date2.valueOf();
if (diff < 0) {
diff *= -1;
}
const diffInDays = diff / (1000 * 60*60*24);
return diffInDays % numberOfDays === 0;
}
date1 = new Date("May 10, 2020 00:00:00"),
date2 = new Date("May 13, 2020 00:00:00");
console.log('validation result:',validateGap(date1, date2, 3), ' | expected result:', true) // = TRUE
console.log('validation result:',validateGap(date1, date2, 2), ' | expected result:',false) // = FALSE
date1 = new Date("May 10, 2020 00:00:00"),
date2 = new Date("May 22, 2020 00:00:00");
console.log('validation result:',validateGap(date1, date2, 5), ' | expected result:', false); // = FALSE
console.log('validation result:',validateGap(date1, date2, 4), ' | expected result:', true); // = TRUE
更新
op 要求每隔 2 天、3 天等一天......所以我更新了这条线
return numberOfDays >= diffInDays;
至
return diffInDays % numberOfDays === 0;
推荐阅读
- c# - 如何在实体框架中对外键应用级联删除
- tensorflow - 无法将张量流导入我的 python 代码
- mongodb - 有没有办法操纵 mongo db 聚合查询的结果以返回单个对象
- javascript - 数组中图像的布局
- javascript - 将嵌套数组中的值设置为 null 的功能方法
- lookup-tables - 如何为员工姓名查找表提供同义词?
- jquery - 隐藏其他选项卡的内容并仅显示选定选项卡的内容
- r - 打印列中具有相同值的行中的级别计数
- android - 如何通过android studio运行本机android项目
- java - API请求(GET调用)是否可以向客户端返回响应并启动后台任务以完成请求