21

new Date()使用和new Date().getTime()减去两个时间戳有什么区别?(jsFiddle上的测试脚本

以下两个给出相同的结果:

var prev1 = new Date();
setTimeout(function() {
    var curr1 = new Date();
    var diff1 = curr1 - prev1;
}, 500);

var prev2 = new Date().getTime();
setTimeout(function() {
    var curr2 = new Date().getTime();
    var diff2 = curr2 - prev2;
}, 500);

有什么理由我应该更喜欢一个而不是另一个?

4

3 回答 3

61

我知道这不在您的问题中,但您可能想考虑Date.now()哪个最快,因为您不需要实例化新Date对象,请参阅以下内容以比较不同版本:http: //jsperf.com /date-now-vs-new-date-gettime/8

上面的链接显示 using new Date()is faster than (new Date()).getTime(),但这Date.now()比它们都快。

浏览器支持Date.now()甚至还不错(IE9+):

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/now

于 2013-03-14T04:31:43.303 回答
4

日期算术将日期转换为纪元时间(自 1970 年 1 月 1 日以来的毫秒数),这就是两个代码片段在功能上相同的原因。

至于哪个更快,Jamund Ferguson 的回答是正确的。

于 2013-03-14T04:42:54.873 回答
4

当您创建一个新的 Date() 对象时,它会自动初始化为当前时间。

来自 W3Schools:

new Date() // current date and time
new Date(milliseconds) //milliseconds since 1970/01/01
new Date(dateString)
new Date(year, month, day, hours, minutes, seconds, milliseconds)

getTime() 函数只是返回那个时间。

来自 W3Schools:

Date.getTime() // method returns the number of milliseconds between midnight of January 1, 1970 and the specified date.

http://www.w3schools.com/jsref/jsref_obj_date.asp

于 2013-03-14T04:31:51.607 回答