【问题标题】:Timestamp between Javascript and PHPJavascript 和 PHP 之间的时间戳
【发布时间】:2013-03-13 16:36:19
【问题描述】:

Javascript:

我有一些日期的对象单元格

params.date = cell.getDate();
params.timestamp = cell.getDate().getTime() / 1000;
console.log(params);

对象{日期:Thu May 09 2013 00:00:00 GMT+0800(中国标准时间),时间戳:1368028800}

然后我尝试检查 PHP 中的时间戳

$date = '1368028800';
echo date('Y-m-d', $date);

2013-05-08

一日之差。为什么?

【问题讨论】:

    标签: php javascript timestamp


    【解决方案1】:

    当您从 Javacript 日期对象获取时间戳时:

    它的输出将以毫秒为单位

     <script>
            var d = new Date();
            alert(d.getTime());
    
         </script>
    

    输出:1386746353000

    以秒为单位的 php 日期对象时间戳

    <?php 
            $date = new DateTime();
            echo $current_timestamp = $date->getTimestamp();
         ?>
    

    输出:1386746353

    所以当你打算将javascript日期对象时间戳与php日期对象一起使用时,你应该将javascript的时间戳除以1000并在php中使用它

    【讨论】:

    • 注意:在javascript中将时间戳除以1000将产生一个浮点数。获取整数~~(Date.now()/1000)
    • 你可以使用parseInt(Date.now() / 1000)
    【解决方案2】:
    params.date = cell.getDate();
    

    返回 DATE 而不是 TIME。

    params.timestamp = cell.getDate().getTime() / 1000;
    

    正在将日期转换为日期+时间 - 不是读取当前时间。

    但是即使你在 javascript 中获取了时间戳,PHP 的 date 函数的输出也将取决于它所在的时区。

    【讨论】:

    • 谢谢。我在 PHP 中有 UTC 时区,在客户端有中国时区。我应该如何修改javascript?
    【解决方案3】:

    UNIX 时间戳 1368028800 对应于格林威治标准时间 2013 年 5 月 8 日星期三 16:00:00 的日期。在您的示例中,您使用的是中国标准时间 (GMT+8),因此 Javascript 显示该时区的日期时间(8 小时后 -> 5 月 9 日)

    【讨论】:

      猜你喜欢
      • 2014-04-14
      • 2011-07-31
      • 2012-12-14
      • 1970-01-01
      • 2011-08-07
      • 2015-02-04
      • 1970-01-01
      • 1970-01-01
      • 2017-01-22
      相关资源
      最近更新 更多