减去两个时间戳时,使用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);
有理由我更喜欢一个而不是另一个吗?
答案 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.
答案 2 :(得分:4)
日期算术将日期转换为大纪元时间(自1970年1月1日以来的毫秒数),这就是为什么功能上两个代码片段是相同的。
至于哪个更快,Jamund Ferguson的回答是正确的。