使用json_encode将MYSQL datetime转换为Javascript兼容

时间:2012-12-28 14:24:48

标签: php mysql json

  

可能重复:
  Convert date format yyyy-mm-dd => dd-mm-yyyy

我从MySQL提取数据并将其传递给PHP页面,其中一部分是Javascript timeline graph

我使用json_encode将查询结果转换为Javascript时间轴所需的格式。

但是json_encode输出以下内容:

{"start":"2012-06-06 18:05:21", "content":"Start Date", }

而时间线所需的格式是

{"start": new Date(2010,7,23,23,0,0), 'content': "Start Date", }

我可以在json_encode进程之前或作为json_encode进程的一部分将输出转换为所需的格式吗?

3 个答案:

答案 0 :(得分:4)

一般来说,从数据库中提取值后,最好在PHP中执行此操作。

查看Convert date format yyyy-mm-dd => dd-mm-yyyy给出的答案,并根据http://php.net/date调整参数。

你将无法完全完成你想要的东西,因为json_encode()将总是用引号括起值而没有办法拥有原生的数据中的JavaScript语句。

您最好的选择是将日期转换为格式为Month Day, Year Hours:Minutes:Seconds的正常字符串。

New Date()可以理解该格式 - 然后在拉动JSON后在JavaScript中执行New Date(data.start)

答案 1 :(得分:3)

$date = DateTime::createFromFormat('Y-m-d H:i:s', '2012-06-06 18:05:21'); // your original DTO
$newFormat = $date->format('Y,m,d,H,i,s'); // your newly formatted date ready to be substituted into JS new Date();
  unset($date);

$json = json_encode(["start" => $newFormat, 'content' => "Start Date"]);

在JS中你可以做什么。类似于:

var objectFromJSON = some_json_decode_procedure(); // decoding JSON to native object
var dateArray = objectFromJSON.start.split(','); // splitting string to elements for new Date()
objectFromJSON.start = new Date(dateArray[0], dateArray[1], dateArray[2], dateArray[3], dateArray[4], dateArray[5]); // resetting Date() object in the object

答案 2 :(得分:0)

您可以创建日期

var date = new Date("2012-06-06 18:05:21"); 

然后尝试按照

data.addRow([new Date(date.getYear(),date.getMonth(),date.getUTCDate())]);