这很简单,我不知道为什么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;
}
答案 0 :(得分:1)
根据您使用的浏览器,Date.parse
可能不支持YYYY-MM-DD
格式,该格式仅在ECMAScript5(大约四年前)之前添加到规范中。
虽然它从未出现在规范中,但几乎所有浏览器都支持YYYY/MM/DD
。
例如,虽然your code(source)适用于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之类的日期库。但是,可能只是为了这个而添加它可能有点过分了。