如何在 JavaScript 中获取时间戳?

新手上路,请多包涵

我想要一个代表当前日期和时间的数字,例如 Unix timestamp

原文由 pupeno 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 986
2 个回答

以毫秒为单位的时间戳

要获取自 Unix epoch 以来的毫秒数,请调用 Date.now

 Date.now()

或者,使用一元运算符 + 调用 Date.prototype.valueOf

 + new Date()

或者,直接调用 valueOf

 new Date().valueOf()

要支持 IE8 和更早版本(请参阅 兼容性表),请为 Date.now 创建一个 shim

 if (!Date.now) {
 Date.now = function() { return new Date().getTime(); }
 }

或者,直接调用 getTime

 new Date().getTime()


以秒为单位的时间戳

要获取自 Unix 纪元 以来的秒数,即 _Unix 时间戳_:

 Math.floor(Date.now() / 1000)

或者,使用按位或取地板会稍微快一些,但可读性也较差,并且将来可能会中断(请参阅解释 12 ):

 Date.now() / 1000 | 0


以毫秒为单位的时间戳(更高分辨率)

使用 performance.now

 var isPerformanceSupported = (
 window.performance &&
 window.performance.now &&
 window.performance.timing &&
 window.performance.timing.navigationStart
 );

 var timeStampInMs = (
 isPerformanceSupported ?
 window.performance.now() +
 window.performance.timing.navigationStart :
 Date.now()
 );

 console.log(timeStampInMs, Date.now());

原文由 daveb 发布,翻译遵循 CC BY-SA 4.0 许可协议

我喜欢这个,因为它很小:

 +new Date

我也喜欢这个,因为它同样简短并且与现代浏览器兼容,超过 500 人投票认为它更好:

 Date.now()

原文由 xer0x 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题