Javascript中的日期变量问题

时间:2013-06-01 14:24:01

标签: 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!");
}

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

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!");
}

if(dt_from === dt_to)无法使用上述代码。有什么想法吗?

3 个答案:

答案 0 :(得分: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)

答案 1 :(得分:1)

您可以使用getTime()比较日期,如下所示:

var a = new Date("2013/05/25");
var b = new Date("2013/05/25");

//compare dates
alert(a.getTime() === b.getTime())

工作示例:http://jsfiddle.net/HrJku/

答案 2 :(得分:1)

两个日期永远不会相同,即使它们指的是相同的时间点。 你需要将它们转换为字符串或数字, 您可以从另一个中减去一个,例如:

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


if(diff=== 0){
    alert("Both dates are Equal!");
}
else if(diff<0){
    alert("From date should not be greater than todate!");
}
else alert("Okay!");