【问题标题】:PHP Passing a Javascript timestamp using json_encodePHP 使用 json_encode 传递 Javascript 时间戳
【发布时间】:2012-03-13 17:25:34
【问题描述】:

我正在准备数据以在 PHP 中传递给我的 Javascript。使用 json_encode 对该数据进行编码并传递它。

我试图传递的元素之一是 javascript 时间戳。 PHP时间戳以秒为单位,Javascript时间戳以毫秒为单位,所以我需要将php时间戳乘以1000。

问题在于生成的 int 太大,并以 1.3239E+12 而不是 1323907200000 发送,途中会损失大约 1 天的精度。

一种方法是在 json 中传递 Date.UTC() 函数,但使用 json_encode 没有简单的方法。

有什么办法吗?

【问题讨论】:

    标签: php javascript json timestamp


    【解决方案1】:

    我过去通过将其编码为字符串而不是整数来解决此问题。

    【讨论】:

    • 不幸的是,如果它是字符串而不是 int,我使用的 js 库会在值上跳闸
    • 在变量使用前把 parseInt 放在变量上?
    【解决方案2】:

    您始终可以在接收后(在 Javascript 中)进行乘法运算,而不是在发送前。

    【讨论】:

    • var timestamp = parseInt(json.timestamp) * 1000;
    【解决方案3】:
    $jstimestamp = (string) time() + "000";
    

    试试看。我以同样的方式解决了类似的问题。但是,最简单的方法是在 Javascript 中相乘或将 js-timestamp 除以 1000。

    【讨论】:

    • 我使用的js库如果传入的是字符串而不是int..
    • 正如我在这里评论另一个答案。查看库的源代码。找到它使用时间戳的函数并执行类似var timestamp = parseInt(json.timestamp) * 1000; 的解决方法
    • 作为参考,我将 json 传递给 highcharts 图表库。我需要修改库以使其工作..不理想。
    • 很奇怪,我解决了前一阵子时间戳的确切问题。这也是高图表。我只是在我设置所有设置的选项函数中将数字解析为整数。
    • 进入并修复了 highcharts 脚本。有效。谢谢:)
    【解决方案4】:

    使用它

    $time = date(strtotime($r->date)) *1000;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-01
      • 1970-01-01
      • 2015-02-04
      • 1970-01-01
      • 2013-03-13
      • 1970-01-01
      • 2014-02-13
      相关资源
      最近更新 更多