Javascript:将日期与数字进行比较

时间:2013-10-28 09:06:18

标签: javascript date

这很简单,我不知道为什么if语句永远不会发送的原因:

var sFrom = $('#from').val(); //2013-10-04
var sTo = $('#to').val(); //2013-10-06

var dFrom = Date.parse(sFrom); 
var dTo = Date.parse(sTo); 

var dFullDate = new Date(item.created*1000);
var sDate = dFullDate.getFullYear() + "-" + (dFullDate.getMonth()+1) + "-" + dFullDate.getDate();
var dDate = Date.parse(sDate); //2013-10-5 should work, but nothing works

if((dDate > dFrom) && (dDate < dTo)){
  insertItem(i, item);
}

更新

它正在比较两个日期,其中一个日期或月份有一位数(如果小于10)。所以我所做的只是添加了一个函数,将它转换为两位数,现在比较起作用了。

function parseDateToYYYYMMDD(date){
    var year = date.getFullYear();
    var month = date.getMonth()+1;
    var day = date.getDate();

    if(month < 10){
        month = "0" + month;
    }

    if(day < 10){
        day = "0" + day;
    }

    var sDate = year + "-" + month + "-" + day;
    var dDate = Date.parse(sDate);
    return dDate;
}

1 个答案:

答案 0 :(得分:1)

根据您使用的浏览器,Date.parse可能不支持YYYY-MM-DD格式,该格式仅在ECMAScript5(大约四年前)之前添加到规范中。

虽然它从未出现在规范中,但几乎所有浏览器都支持YYYY/MM/DD

例如,虽然your codesource)适用于Chrome,但它无法在IE8上运行。如果我们update it to use / instead of -source),它适用于Chrome和IE8。

或者,当然,你总是可以自己解析它:

function parseYYYYMMDD(str) {
    var parts = str.split('-');
    return +new Date(
        parseInt(parts[0], 10),     // Year
        parseInt(parts[1], 10) - 1, // Month (starts with 0)
        parseInt(parts[2], 10)      // Day
    ); 
}

如果您正在进行日期工作的批次,则可能需要查看MomentJS之类的日期库。但是,可能只是为了这个而添加它可能有点过分了。