UNIX 时间戳是一个整数,表示自 1970 年 1 月 1 日以来经过的秒数。
在类似 UNIX 的机器(包括 Linux 和 macOS)上,您可以在终端中键入 date +%s
并返回 UNIX 时间戳:
$ date +%s
# 1659858284
当前时间戳可以通过调用 Date 对象上的 now()
方法获取:
Date.now()
你可以通过调用得到相同的值:
new Date().getTime()
// or
new Date().valueOf()
注意:IE8 及以下版本在 Date 上没有
now()
方法。如果需要支持 IE8 及以下版本,请寻找 polyfill,或使用new Date().getTime()
。
您还可以使用:
+new Date()
这可能看起来很奇怪,但它是完全正确的 JavaScript 代码。一元运算符 +
自动调用分配给它的任何对象上的 valueOf()
方法,该方法返回时间戳(以毫秒为单位)。这段代码的问题在于,您实例化了一个新的 Date
对象,该对象会立即被丢弃。
要根据时间戳生成日期,请使用 new Date(<timestamp>)
,但要确保传递一个数字(如果使用字符串将得到一个无效日期结果,如果不确定,请使用 parseInt()
)
另外,JavaScript 中的时间戳以毫秒为单位。
要获取以秒为单位的时间戳,请使用以下方法进行转换:
Math.floor(Date.now() / 1000)
注意:有些教程使用
Math.round()
,但这将接近下一秒,即使第二秒尚未完全完成。
或者:
~~(Date.now() / 1000)
~~
与 Math.floor
做着相同的工作,但它可读性较差。
以下是获取当前时间的时间戳的三种方式:
new Date().getTime()
+new Date()
Date.now()
如果你已经放弃了 IE8,你可以转而使用 Date.now()
静态方法来获取时间戳。