javascript - Javascript 中的日期变量问题

标签 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)不适用于上述代码。有什么想法吗?

最佳答案

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

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)

关于javascript - Javascript 中的日期变量问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16873689/

相关文章:

javascript - 如何在回调中从 React 组件访问 "this"

javascript - 父级更新会导致上下文使用者重新安装?

javascript - 将 Javascript 二维数组转换为 ArrayBuffer

javascript - 如何使用 window.open() 打开弹出窗口,确认消息为 Yex/No?

javascript - 按值分组的数据属性计算其他数据属性的总和

javascript - 每个项目的不同随机数

javascript - jQuery:将响应文档加载到div中

javascript - Angular ui-tree并接受限制节点的回调?

javascript - 如何将元素插入数组而不重复它们?

javascript - 分辨率改变物体的位置