Javascript中的日期变量问题

Dyl*_*lan 0 javascript

var dt_from = "2013/05/25";
var dt_to   = "2013/05/25";

if(dt_from == dt_to)
{
    alert("Both dates are Equal!");
}
else if(dt_from > dt_to)
{
    alert("From date should not be greater than todate!");
}
else if(dt_from < dt_to)
{
    alert("Okay!");
}
Run Code Online (Sandbox Code Playgroud)

上述守则工作正常.但是以下代码不起作用:

var dt_from = new Date("2013/05/25");
var dt_to   = new Date("2013/05/25");

if(dt_from === dt_to)
{
    alert("Both dates are Equal!");
}
else if(dt_from > dt_to)
{
    alert("From date should not be greater than todate!");
}
else if(dt_from < dt_to)
{
    alert("Okay!");
}
Run Code Online (Sandbox Code Playgroud)

if(dt_from === dt_to)不适用于上面的代码.任何的想法?

Ber*_*rgi 5

您正在比较对象引用==.虽然它们可能代表相同的日期时间,但它们是不同的对象.使用</ >工作,因为它将对象转换为数字(自纪元以来的毫秒),然后进行比较.如果要测试相等性,则必须手动强制进行转换:

dt_from.getTime() == dt_to.getTime() // most explicit
// or
+dt_from == +dt_to // shortest
dt_from - dt_to == 0  // equivalent…
dt_from.valueOf() == dt_to.valueOf()
Number(dt_from) == Number(dt_from)
Run Code Online (Sandbox Code Playgroud)