使用javascript计算两个日期之间的天数

时间:2010-09-03 08:28:14

标签: javascript jquery

我从日期时间选择器中获取日期:

var endDate = new Date();
endDate = $("input[id$='DateTimeControl2Date']").val()

然后我找到另一个日期,并尝试检查这两个日期之间有多少天,但我收到错误“对象不支持此属性或方法”。我做错了什么?

$('.StatusDateTable').each(function() {
var statusDate = new Date(); 
statusDate = $(this).find(".dates").html();
var statusLight = $(this).find(".StatusLight").attr("src");
statusLight = statusLight.substring(33).slice(0,-9);
if (statusLight == "Blue") {
var oneDay = 1000*60*60*24;

alert(endDate + statusDate);
var date1_ms = endDate.getTime();
var date2_ms = statusDate.getTime();

var dayDifference = Math.abs(Math.round((date1_ms - date2_ms)/oneDay));

alert(dayDifference);

}
});

endDate的格式为02/09/2010和statusDate 1/09/2010。

提前致谢。

2 个答案:

答案 0 :(得分:3)

Date()是一个构造函数,当你调用它时,你将该构造函数的结果赋给变量。然后,在之后的行中,您将另一个对象(jQuery val()方法的结果)分配给同一个变量。

// The next line will overwrite the current value of `endDate`
endDate = $("input[id$='DateTimeControl2Date']").val()

Date()接受将被解析为日期的参数。这是您将新日期对象正确设置为特定日期/时间的方法:

var endDate = new Date($("input[id$='DateTimeControl2Date']").val());

这假设日期以 Date()可以解析的格式返回。这同样适用于您的statusDate变量。

<小时/> 刚刚看到底部两个日期的格式,在被 Date()解析时效果不佳。它们根本不会在IE中解析,而其他浏览器会将它们解析为mm / dd / yyyy格式。这意味着您必须手动拆分它们并将它们应用于 Date()构造函数:

var endDateSplit = $("input[id$='DateTimeControl2Date']").val().split("/"),
    endDate = new Date(endDateSplit[2], endDateSplit[1]-1, endDateSplit[0]);

答案 1 :(得分:0)

对于javascript中的日期操作,有这个库:

  

http://www.datejs.com/