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

Javascript 为什么这种计算两个日期之间差异的方法不起作用?,javascript,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

我试图测试是否已经过了一定的时间。我使用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来创建一个变量。似乎无法调用新的Date.getTime。请你解释一下为什么不能用第二种方式写

简而言之,如果你想这么做,就这样做:

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

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

getTime是日期对象的函数,而不是日期函数的函数,因此您必须调用date来获取日期对象,然后对其调用getTime

这会一次性完成,但有点混乱

(new Date()).getTime()
Date.getTime

不一样

新的Date.getTime

Datex.time.getTime

不一样

新建Datex.time.getTime


不起作用><检查每个表达式的计算结果,您将很快看到发生了什么。您可以使用Date.now而不是var now=new Date,now\u t=now.getTime;。对于不支持Date.now.的浏览器,在Tomalak提供的链接中有一个非常简单的兼容性垫片。必须创建新对象的原因是什么?我知道它在规范中,但是javascript是否无法在AlternativeDate.getTime可以工作的地方实现呢?@user712092:javascript本来可以被设计用来煮咖啡,如果这是有意的话;不是的。@Lightnes:为什么不推荐那个网站呢?@user712092:点击我给你的链接,找出答案。