Javascript中日期变量的问题

issue with date variable in Javascript

本文关键字:问题 变量 日期 Javascript      更新时间:2023-09-26
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)不能与上述代码一起工作。任何想法?

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

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)

可以使用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/

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

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