为什么这种获取两个日期之间差异的方法不起作用?

时间:2011-09-04 16:13:07

标签: javascript

我正在尝试测试是否已经过了一段时间。我用javascript。

两个示例都使用此变量:

var delete_after = 2 /*minutes*/ * 60 /*seconds*/ * 1000/*miliseconds*/; // [miliseconds]

这有效:

var now = new Date();
var now_t = now.getTime();
var then = new Date(x.time); // x.time is string with a time
var then_t = then.getTime();//).getTime();
if (now_t - then_t > delete_after) {
    alert("deleted");
}

这不是:

if (Date().getTime() - Date(x.time).getTime() > delete_after) {
    alert("deleted");
}
我相信他们是相同的,但事实并非如此。我检查了优先级,最后看来我必须调用new来创建变量。似乎无法调用(new Date()。getTime())。拜托,你会这么好解释为什么不能写第二种方式吗?

3 个答案:

答案 0 :(得分:5)

  • Date().getTime()

    不同

    (new Date()).getTime()


  • Date(x.time).getTime()

    不同

    (new Date(x.time)).getTime()

答案 1 :(得分:3)

好吧,如果你想简单地做,那就这样做:

if ((new Date()).getTime() - (new Date(x.time)).getTime() > delete_after) {
    alert("deleted");
}

您的示例不起作用,因为在对其执行任何函数调用之前必须实例化对象。

答案 2 :(得分:2)

getTime是日期对象的函数,而不是Date()函数的函数,因此您必须调用Date()来获取日期对象,然后在其上调用getTime。

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date

这将一气呵成,但有点令人困惑

(new Date()).getTime()