为什么这种方法不能获得两个日期之间的差异?
问题描述:
我想测试是否已经过了一段时间。我使用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");
}
我belived他们是等价的,但事实并非如此。我检查了优先级,最后看来我必须调用new来创建一个变量。似乎不可能调用(new Date()。getTime())。请,你会如此善意地解释为什么它不能写成第二种方式?
答
getTime是日期对象的函数,而不是Date()函数,所以您必须调用Date()来获取日期对象,然后调用getTime。
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date
这把一切都一气呵成,但它是一个有点混乱
(new Date()).getTime()
答
好吧,如果你想这样做总之,只要做到这一点是这样的:
if ((new Date()).getTime() - (new Date(x.time)).getTime() > delete_after) {
alert("deleted");
}
您的例子没有工作,因为对象有执行上的任何函数调用之前被实例化。
答
-
Date().getTime()
是不一样的
(new Date()).getTime()
-
Date(x.time).getTime()
是不一样的
(new Date(x.time)).getTime()
“不工作”>。
您可以使用'Date.now()'而不是'var now = new Date(),now_t = now.getTime();'。对于不支持'Date.now()'的浏览器,[MDN文档](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/now)中有一个非常简单的兼容填充。 – user113716