我需要查明我的日期是否在两个日期之间(用于检查生日是否在当前日期的+/- 10天之间)而不照顾年份(因为生日我们不需要年份)。
我尝试了以下但是它的典型匹配并且不会忽略年份。如果我只比较日期和月份,那么月末重叠会产生问题。
(moment(new Date()).isBetween(moment(date).add(10, 'days'), moment(date).subtract(10, 'days')));
答案 0 :(得分:0)
if(Math.abs(birthday - new Date) < 10/*d*/ * 24/*h*/ * 60/*min*/ * 60/*secs*/ * 1000/*ms*/)
alert("somewhat in the range");
您可以使用日期,就像它们是毫秒一样。只需通过减去它们来获得差异,然后检查它是否小于10天(以毫秒为单位)。
答案 1 :(得分:0)
答案 2 :(得分:0)
这是我最终的解决方案。
const birthDate= new Date(birthDate);
birthDate.setFullYear(new Date().getFullYear());
const isBirthdayAround = Math.abs(birthday - new Date) < 10*24*60*60*1000;
如果你正在使用时刻:
const birthDate= new Date(birthDate);
birthDate.setFullYear(new Date().getFullYear());
const isBirthdayAround = moment(new Date()).isBetween(moment(birthDate).subtract(10, 'days'), moment(birthDate).add(10, 'days'));
答案 3 :(得分:0)
这可能对你有帮助。
var birthDate = new Date("05/16/1993");
var day = birthDate.getDate();
var month = birthDate.getMonth();
var currentDate = new Date();
var tempDate = new Date();
var oneDay = 1000 * 60 * 60 * 24
var dayDifference = 10 // you can set here difference
tempDate = new Date(tempDate.setMonth(month,day))
var timeDiff = tempDate.getTime() - currentDate.getTime();
timeDiff = Math.round(timeDiff / oneDay)
if(-dayDifference <= timeDiff && timeDiff <=dayDifference){
alert("matched")
}
else{
alert("not matched")
}
&#13;