解决JavaScript中使用时间戳获取当前时分秒不符合问题

有时候在使用JavaScript中编写当前时间的时候,想要通过时间戳来获取当前时间的时分秒来渲染页面,通过公式来计算出时间戳的时分秒,但是会发现,使用公式获取出来的时间分秒都是正确的但是小时根本对不上,代码也没有问题。

        

 代码示例:

<div class="box"></div>
    <script>
        const nowData = new Date()
        const stamp = +nowData
        const h = parseInt((stamp/1000) / 60 / 60 % 24)
        const m = parseInt((stamp/1000) / 60 % 60)
        const s = parseInt((stamp/1000) % 60)
        document.querySelector('.box').innerHTML = `${h > 9 ? h : '0' + h}:${m > 9 ? m : '0' + m}:${s > 9 ? s : '0' + s}`
    </script>

 代码都是正确的,公式也没有错误,但是为什么时间相差了8个小时呢?

通过JavaScript另一种方法,不用时间戳,直接获取时分秒就是正确的

 

 示例代码:

<div class="box"></div>
    <script>
        const nowData = new Date()
        const h = nowData.getHours()
        const m = nowData.getMinutes()
        const s = nowData.getSeconds()
        document.querySelector('.box').innerHTML = `${h > 9 ? h : '0' + h}:${m > 9 ? m : '0' + m}:${s > 9 ? s : '0' + s}`
    </script>

 但是有些时候不得不使用时间戳来获取时间,该如何解决呢?

时间戳原理

通过将 nowDate 转换为时间戳(单位为秒),然后将其除以60再除以60,再取余24,来计算小时数。这意味着该计算是基于从1970年1月1日起的秒数进行的,也称为Unix时间戳。它是一个全球性的标准时间。它取决于用户所在的时区,因此可能与时间戳计算得到的小时数不同。时区不一致,所以需要加上时区相差的时间!!

而 nowDate.getHours() 方法返回的是基于系统本地时间的小时数。如果你想要得到与本地时间相对应的小时数,可以选择使用 nowDate.getUTCHours() 方法来获取UTC时间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

识海.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值