2015-03-19 2 views
2

Я RESTfully кодировал JSON из MySQL с помощью PHP, один столбец - дата, которая в MySQL приходит как это 01/03/15 06:00, в кодировке JSON это происходит именно так.преобразование даты Mysql в миллисекунды в JSON с использованием php

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

Как я преобразовать это ниже код, где дата в миллисекунды метки времени

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

PHP кода для JSON Encode

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 
    } 

ответ

1

Если вы хотите, чтобы выполнить преобразование на сервере затем сделайте это внутри цикла while, прежде чем назначить текущий результат $ row to $:

EDIT: конвертированы метку времени в секундах до миллисекунды, как 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(); 
+0

Работает отлично, Приветствия –

+0

Это фактически не конвертировать их время в миллисекундах. –

+0

@ Джон Конде, спасибо, я этого не понимал! Обновлен ответ на миллисекунды. –

0

Try в этом примере:

<?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"]] 
Смежные вопросы