我从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进程的一部分将输出转换为所需的格式吗?
答案 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())]);