【问题标题】:PHP strtotime and JavaScript Date.parse return different timestampsPHP strtotime 和 JavaScript Date.parse 返回不同的时间戳
【发布时间】:2013-01-29 20:32:24
【问题描述】:

我在 JavaScript 中得到相同的日期时间秒值,这是由 PHP 中的 strtotime() 给出的。但我在 JavaScript 中需要相同的值。

PHP 代码

echo strtotime("2011-01-26 13:51:50");
// 1296046310

JavaScript 代码

var d = Date.parse("2011-01-26 13:51:50");
console.log(d);
// 1296030110000

【问题讨论】:

    标签: php javascript date datetime timestamp


    【解决方案1】:

    您需要使用相同的时区进行合理比较:

    echo strtotime("2011-01-26 13:51:50 GMT");
    // 1296049910
    
    var d = Date.parse("2011-01-26 13:51:50 GMT") / 1000;
    console.log(d);
    // 1296049910
    

    更新

    根据标准,仅支持 RFC 2822 格式的日期:

    Date.parse("Wed, 26 Jan 2011 13:51:50 +0000") / 1000
    

    要生成这样的日期,可以在 PHP 中使用gmdate('r')

    echo gmdate('r', 1296049910);
    

    【讨论】:

    • 在 Mozilla 浏览器中加入 NaN
    【解决方案2】:

    JavaScript 使用毫秒作为时间戳,而 PHP 使用秒。因此,您会得到非常不同的日期,因为它相差了 1000 倍。

    样本

    echo date('Y-m-d', TIMESTAMP / 1000);

    评论回复

    <script type="text/javascript" src="js/jquery.js"></script>
    <script type="text/javascript">
    
        function toTimestamp(year,month,day,hour,minute,second)
        {
            var datum = new Date(Date.UTC(year,month-1,day,hour,minute,second));
            return datum.getTime()/1000;
        }
    
        $(function()
        {
            console.log(toTimestamp(2011,01,26,13,51,50));
    
        });
    
    </script>
    
    <?php
    
    echo $the_date = strtotime("2011-01-26 13:51:50");

    【讨论】:

    • 这不是唯一的区别:)
    • @jack 我知道 TIMEZONE 也很重要,但我只是给出第二个区别,因为你已经给出了第一个区别
    【解决方案3】:

    strtotime()Date.parse() 分别生成分辨率为秒和毫秒的 UNIX 时间戳。但是,如果输入字符串中缺少时区信息,则假定为本地时间。因此输入字符串2011-01-26T13:51:50 可能在不同的机器上产生不同的输出,即使在两台机器上都使用 PHP(或 JavaScript)来生成时间戳。

    解决方案是在字符串中明确指定时区。这应该在任何机器上产生相同的结果:

    Date.parse("Jan 26, 2011 13:51:50 GMT+0500") / 1000; // 1296031910
    strtotime("Jan 26, 2011 13:51:50 GMT+0500");         // 1296031910
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-02
      • 1970-01-01
      • 2018-10-25
      • 1970-01-01
      相关资源
      最近更新 更多