正如在评论和MDN链接中提到的,Internet Explorer 8不支持Date.now()。因此,如果需要考虑与IE8的兼容性,您应该使用new Date().valueOf(),但代价是代码的可读性会略有下降。 或者,如果你想使用Date.now(),但必须与不支持它的浏览器兼容,你可以将以下代码放在JavaScript文件中的某个地方,这将增加对它的支持。
if (!Date.now) {
Date.now = function() {
return new Date().getTime();
}
}
4条答案
按热度按时间ibrsph3r1#
有几种方法可以在JavaScript中获取当前时间:
new Date()
创建一个表示当前日期/时间的Date
对象new Date().valueOf()
返回自1970年1月1日午夜以来的毫秒数new Date().getTime()
功能等同于new Date().valueOf()
Date.now()
功能等同于上述2种方法正如在评论和MDN链接中提到的,Internet Explorer 8不支持
Date.now()
。因此,如果需要考虑与IE8的兼容性,您应该使用new Date().valueOf()
,但代价是代码的可读性会略有下降。或者,如果你想使用
Date.now()
,但必须与不支持它的浏览器兼容,你可以将以下代码放在JavaScript文件中的某个地方,这将增加对它的支持。xfb7svmp2#
2019年答案
由于我们不再关心IE8,只有两种方法是有趣的:
new Date()
-创建一个表示当前日期/时间的Date
对象Date.now()
-返回自1970年1月1日午夜以来的毫秒数(The另外两个在老答案中提到的方法在功能上等同于
Date.now()
,但看起来更丑,在IE8中工作。)作为一种风格,我发现在处理间隔的代码中使用
Date.now()
更清楚(通常从较晚的日期中减去较早的日期以计算经过的时间),而new Date()
用于时间戳,例如。例如,写入数据库的那些。bbmckpt73#
在阅读MDN之后,似乎
new Date().getTime()
,new Date().valueof()
和Date.now()
在功能上都是等效的。* 然而 *,Date.now()
仅在不同版本的浏览器中支持,最重要的是IE9。因此,如果PreIE 9支持很重要,您可能需要polyfill。编辑:真的,唯一关心的是IE。不总是这样吗;)
owfi6suc4#
当我需要时间戳时,我通常使用
+new Date()
或+new Date().toString(36)
。最近我换到了
Date.now()
,因为它更有效率或者有一天会变得更有效率。从技术上讲,操作系统将日期时间报告为原语,通过调用new
Date()
,JavaScript引擎必须创建一个具有原型的对象(通过引用传递,并且必须在以后进行垃圾收集),然后执行valueOf
的另一个函数调用。但是,
Date.now
可以是全局Date
对象的静态函数,它对从OS报告的值进行简单的数学运算我没有检查所有JavaScript引擎的源代码,以确保
Date.now
不会创建日期示例,但它更高效,或者有一天会变得更高效。