时间戳除于1000是什么意思?

Codermin
  • 556

我的需求是当前时间戳+1天,百度得到的答案:

// 当前时间戳(秒级)
let timestamp = Date.parse(new Date());
console.log('[今天时间戳:]',timestamp)

// + 1年
let targerTime = (timestamp/1000 + 86400)*1000;
console.log('[加1天的时间戳:]',targerTime);

有个地方不是很理解,为什么要先除于1000呢,有什么含义吗?直接+86400秒为什么不行?

回复
阅读 1.3k
5 个回答
  1. 你看的这个解决方案就是脱裤子放屁,多此一举。
  2. +86400 是肯定不行的,你需要 +86400 * 1000

这里面主要就这么几个知识 点:

  1. JS 的时间戳是毫秒,86400 是秒,相加需要乘以 1000

    timestamp + 86400 * 1000
        = (timestamp / 1000) * 1000 + 86400 * 1000
        = (timestamp + 86400) * 1000

    你看看上面这样是不是多此一举

  2. Date.parse() 得到的结果,永远都会是以 000 结尾,即没有毫秒精度的时间戳:

    Date.parse(new Date())
        = Date.parse( (new Date()).toString() )
        = Date.parse( 'Tue Oct 19 2021 09:45:53 GMT+0800 (中国标准时间)' ) // 先调用 `.toString()` 方法之后再 `parse()`

    Date.prototype.toString() 方法默认格式会没有毫秒精度,可以试试下面这样:

    Date.ptorotype.toString = Date.prototype.toISOString
    Date.parse(new Date())

    得到的结果就有可能是 1634608265224 这样的值了,这个时候,你才需要使用 (timestamp/1000 + 86400)*1000,但也不是这样,而是:(Math.round(timestamp/1000) + 86400)*1000,把 timestamp / 1000 之后,Math.round 去掉后面的小数部分,得到一个纯净的 时间戳

你自己执行一下不就知道了……

JS 里取得的所谓“时间戳”是毫秒级的;而我们平时提的“时间戳”其实是指“Unix 时间戳”,它是秒级的。

毫秒和秒怎么换算不用多说了吧?

这只是他给出的一种处理方法,你可以不用他的按照你自己的思路来写,除以1000以后是在秒级进行操作(数字小利于计算),不除以1000则是在毫秒级进行操作,

js的时间戳是毫秒级,转换一下,只是为了将时间控制在秒这个级别

直接加86400*1000不行?

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

宣传栏