2

可能重复:
转换日期格式 yyyy-mm-dd => dd-mm-yyyy

我正在从 MySQL 中提取数据并将其传递给 PHP 页面,其中一部分是Javascript 时间线图

我正在使用 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 过程的一部分将输出转换为所需的格式吗?

4

3 回答 3

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()可以理解该格式 - 然后New Date(data.start)在提取 JSON 后在 JavaScript 中执行一个操作。

于 2012-12-28T14:29:16.653 回答
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
于 2012-12-28T14:38:51.863 回答
0

您可以创建日期

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

然后尝试以下

data.addRow([new Date(date.getYear(),date.getMonth(),date.getUTCDate())]);
于 2012-12-28T15:16:19.857 回答