Date()vs Date()。getTime()

时间:2013-03-14 04:27:23

标签: javascript date

减去两个时间戳时,使用new Date()new Date().getTime()有什么区别? (test script on 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);

有理由我更喜欢一个而不是另一个吗?

3 个答案:

答案 0 :(得分:56)

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

以上链接显示使用new Date()的速度比(new Date()).getTime()快,但Date.now()速度比Date.now()快。

{{1}}的浏览器支持甚至不是那么糟糕(IE9 +):

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

答案 1 :(得分: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

答案 2 :(得分:4)

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

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