我从日期时间选择器中获取日期:
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。
提前致谢。
答案 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中的日期操作,有这个库: