如果:
$("#EndDate").val();
返回一个以月/日/年格式表示的字符串,您可以使用以下方式将其转换为日期对象:
function parseDate(s) {
var b = s.split(/\D/);
return new Date(b[2], --b[0], b[1]);
}
为了创建可比较的日期,请继续做你已经在做的事情:
var today = new Date();
today.setHours(0,0,0,0);
所以现在你可以这样做:
if (parseDate($("#EndDate").val()) > today) {
// date is greater than today
}
或者,如果你真的必须:
if (+parseDate($("#EndDate").val()) > new Date().setHours(0,0,0,0)) ...
请注意,当您执行以下操作时:
Date.parse(new Date().setHours(0, 0, 0, 0))
首先,使用new Date()
创建一个新日期。调用setHours()
设置时间值,但调用的返回值是Date对象的UTC时间值。
Date.parse期望一个看起来像日期和时间的字符串,因此如果您传递一个类似于1399903200000这样的数字时间值,实现将会回退到一些启发式算法中,要么将其转换为日期,要么返回NaN.
因此,请不要这样做。使用Date.parse解析任何字符串都依赖于具体的实现(即使是在ECMA5中指定的字符串),并且在不同的浏览器中会返回不同的结果,所以也请不要那样做。
$("#EndDate").val("5/13/2014")
。 - putvande