如何用js判断输入的日期是否在当前日期的一个星期之内?

如果用户输入了一个日期(2015-10-10),怎样判断这个日期在当前日期的一个星期之内?

阅读 12.5k
6 个回答

思路很简单,就是比较输入的时间和现在的时间相差的毫秒数,看它和一周的毫秒数的大小

var input = new Date(2015,7,29) //你要用正则成功的截取正确格式的参数,并注意月份和实际输入的相差1

function isWeek() {

    return Math.abs(input - new Date()) < 7*24*3600*1000 //时间差和一周时间的比较

}

计算指定日期的星期范围
代码再做些优化吧

function getWeekRangeBy(someDateTime) {
    var weekFirstDate,weekEndDate;
    if (someDateTime.getDay() === 0) {
        weekFirstDate=new Date(someDateTime.getTime()-6*24*3600*1000);
        weekEndDate=someDateTime;
    } else if (someDateTime.getDay() === 1) {
        weekFirstDate=someDateTime;
        weekEndDate=new Date(someDateTime.getTime()+6*24*3600*1000);
    } else if (someDateTime.getDay() === 2) {
        weekFirstDate=new Date(someDateTime.getTime()-1*24*3600*1000);
        weekEndDate=new Date(someDateTime.getTime()+5*24*3600*1000);
    } else if (someDateTime.getDay() === 3) {
        weekFirstDate=new Date(someDateTime.getTime()-2*24*3600*1000);
        weekEndDate=new Date(someDateTime.getTime()+4*24*3600*1000);
    } else if (someDateTime.getDay() === 4) {
        weekFirstDate=new Date(someDateTime.getTime()-3*24*3600*1000);
        weekEndDate=new Date(someDateTime.getTime()+3*24*3600*1000);
    } else if (someDateTime.getDay() === 5) {
        weekFirstDate=new Date(someDateTime.getTime()-4*24*3600*1000);
        weekEndDate=new Date(someDateTime.getTime()+2*24*3600*1000);

    } else if (someDateTime.getDay() === 6) {
        weekFirstDate=new Date(someDateTime.getTime()-5*24*3600*1000);
        weekEndDate=new Date(someDateTime.getTime()+1*24*3600*1000);
    }
    return {
        weekFirstDate:new Date(clearDateFormater(weekFirstDate)),
        weekEndDate:new Date(clearDateFormater(weekEndDate))
    }
}

由于说的不是很详细,我的思路如下:

//获取输入时间内容
var inputTime=document.formName.inputName.value;

//然后用这个输入时间去建立一个时间对象
//这里的inputTime格式很重要,会决定是否创建时间成功

var inputTimeObject=new Date(inputTime);

//然后就是获取当下的时间

var nowTimeObject=new Date();

//然后比较输入时间和当前时间的差

//一周的时间以毫秒计算出来

var weekMilliSeconds=72460601000;

//然后比较 inputTimeObject和nowTimeObject的差额是不是在 weekMilliSeconds之内

@yujieyu7 的答案是正确的,我说个不正确的。`

var date="2015-05-06";
var nowDate="2015-05-09";
var _day=nowDate.replace(/-/g,"")1-date.replace(/-/g,"")1;
`

这种时间的比较,最后一般都要换成毫秒。

使用date.js很容易判断:
function isSameWeekWithNow(date){
var now = Date.today();
var nowWeek = now.getWeek();
var compareDateWeek = date.getWeek();
return nowWeek == compareDateWeek;
}
效果:http://www.jscssshare.com/#/sample/2TTm4VLO

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题