javascript - Date.now() 以微秒而不是毫秒为单位返回一个值
问题描述
Date.now()
,根据文档应该返回 Unix 时间戳或纪元时间,即自 1970 年 1 月 1 日以来经过的毫秒数。
根据本网站(或任何其他有效计算方式)的当前 unix 时间戳约为 1554637184。请注意,此值中有 10 位数字。这个值实际上是以毫秒为单位的。
但是,Date.now()
Chrome 73、Firefox 66.0.2 和 Edge 17.17134 这三种浏览器返回的值是 1554637694364,观察到它是 13 位数字,因此,我推断它是微秒数自 1970 年 1 月 1 日起失效。
这是怎么回事?
经过多年的使用,我才意识到这一点,因为刚才我正在调试一些代码,这些代码进行了这样的检查,结果失败了:
let endTime = ...; // a time later than now expressed as a unix timestamp
let now = Date.now();
if (endTime <= now) {
// And it always came here, and that led me to this discovery
...
}
解决方案
当前纪元时间(又名 unix 时间戳)1554637856
是自 1970 年 1 月 1 日以来的秒数,而不是毫秒。
Date.now()
返回以毫秒为单位的纪元时间,所以你想要
if (endTime <= now / 1000) {
...
推荐阅读
- java - 我不明白为什么 Java 泛型和集合一书中给出的正确示例遵循广告中的真理原则
- in-app-subscription - 过期后重新订阅时,Google Play 商店不会返回 obfuscatedExternalAccountId
- c - 条件为假,但即便如此,它的打印尺寸为 s
- python - Python Pandas Dataframe 数据透视表列和值顺序
- reactjs - 试图在反应js中使用地图内的条件
- javascript - 如何使用 JQuery 隐藏元素?
- php - PHP 在字符串中检测特定的非字母数字 UTF8 / Unicode 宪章
- jquery - Ajax Unobtrusive 表单有时在.net core razor 中提交两次的问题
- reactjs - 用于图像下载的 React 渲染
- gitlab-ci - 如何在不触发下载的情况下查看原始构建工件?