Javascript - 查看日期是否在两个日期之间,忽略年份

时间:2018-05-18 15:43:26

标签: javascript

我需要查明我的日期是否在两个日期之间(用于检查生日是否在当前日期的+/- 10天之间)而不照顾年份(因为生日我们不需要年份)。

我尝试了以下但是它的典型匹配并且不会忽略年份。如果我只比较日期和月份,那么月末重叠会产生问题。

(moment(new Date()).isBetween(moment(date).add(10, 'days'), moment(date).subtract(10, 'days')));

4 个答案:

答案 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)

您可以使用方法momentjssubtract add查找您想要的任何日期。

示例:

  •   

    时刻()。添加(7,'天'); //接下来的7天

  •   

    时刻()。减去(7,'天'); // 7天前

答案 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)

这可能对你有帮助。

&#13;
&#13;
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;
&#13;
&#13;