【问题标题】:Javascript timestamps are invalidJavascript 时间戳无效
【发布时间】:2026-02-03 07:40:01
【问题描述】:

我现在整个早上都在摆弄 javascripts 时间戳。我通过运行不断得到无效的时间戳

today = (new Date()).setHours(0,0,0,0)today = (new Date()).getTime()

这两个输出13389300000001338978151748

我认为这只是一个 chrome js 引擎错误,但用 Firefox 重现了它。这两条语句的预期输出是13389300001338977700

不过,我确实有解决此问题的方法。解决方法是这样的:

today = parseInt(((new Date()).setHours(0,0,0,0) * Math.pow(10, -3)).toFixed(0))

或者没有 setHours()

today = parseInt(((new Date()) * Math.pow(10, -3)).toFixed(0))

这是一个常见的错误吗?我做错了什么来得到这些结果吗?时间戳的格式为时间戳 * 10^3。

编辑:

原来我期望的时间是秒(该死的 PHP),而 JAVASCRIPT 以毫秒为单位输出它。我正在使用 phpJS 日期/时间库,而 javasctipt 时间戳似乎不能与 strtotime() 和 date() 原生兼容

我尝试使用 unix 时间戳,以秒为单位。

【问题讨论】:

    标签: javascript timestamp


    【解决方案1】:

    getTime() 返回自 1970/01/01 以来的毫秒数,而不是秒数。

    //milliseconds
    var milliseconds = new Date().getTime();
    
    //seconds
    var seconds = new Date().getTime() / 1000;
    

    【讨论】:

    • 该死!还以为是秒! +1
    【解决方案2】:

    这不是一个错误 - 您期望时间戳以秒为单位(为什么?),而 javascript 提供毫秒精度的时间戳。

    【讨论】:

      【解决方案3】:

      Unix 时间戳使用秒,而 Javascript 时间戳使用毫秒!这就是为什么你需要乘以除以 1000。

      http://www.w3schools.com/jsref/jsref_utc.asp

      UTC() 方法返回时间间隔的毫秒数 1970 年 1 月 1 日的指定日期和午夜,根据通用 时间。

      【讨论】:

      • 使用 phpJS 日期/时间函数把我搞砸了;)我主要开发 PHP,所以我习惯于以秒为单位的时间戳。很高兴知道。谢谢!