使用 php 在 JSON 中将 Mysql 日期转换为毫秒

converting Mysql date to milliseconds in JSON using php

我使用 PHP 从 MySQL RESTfully 编码了 JSON,一列是日期,在 MySQL 中是这样的 01/03/15 06:00,在JSON编码上是这样的。

[["01/03/15 06:00","89"],["02/03/15 06:00","87"]]

如何将其转换为以下代码,其中日期以毫秒为单位时间戳

[["1420245000000","89"],["1422923400000","87"]]

PHP 代码 JSON 编码

private function productionhourlys(){   
        if($this->get_request_method() != "GET"){
            $this->response('',406);
        }
        $query="SELECT distinct  c.Date, c.RoA FROM productionhourlys c order by c.productionhourlyNumber desc";
        $r = $this->mysqli->query($query) or die($this->mysqli->error.__LINE__);

        if($r->num_rows > 0){
            $result[] = array_values([]);
            while($row = $r->fetch_row()) {
                $result[] = $row;
            }
            $this->response($this->json($result), 200); // send user details
        }
        $this->response('',204);    // If no records "No Content" status
    }

如果您想在服务器端进行转换,那么在将当前 $row 分配给 $result 之前在 while 循环中进行转换:

编辑:按照 OP 的要求将以秒为单位的时间戳转换为毫秒

while($row = $r->fetch_row()) {
    $row[0] = strtotime($row[0]); // convert to unix timestamp (in seconds)
    $row[0] = 1000 * $row[0]; // convert seconds to milliseconds
    $result[] = $row;
}

我也不确定这行的目的是什么:

$result[] = array_values([]);

如果您只是创建一个新的空数组,您可以这样做:

$result = array();

试试这个例子:

<?php

$json = '[["01/03/15 06:00","89"],["02/03/15 06:00","87"]]';

$array = json_decode($json, true);

$array = array_map(function($n) {$date = new DateTime($n[0]); return array($date->format('U'), $n[1]);}, $array);

$json = json_encode($array);

echo $json;

输出:

[["1420282800","89"],["1422961200","87"]]