将JSON转换为日期对象

时间:2016-06-07 15:28:52

标签: php angularjs json date

我在这里得到了请求

$http.get('php/getactivity.php')
    .then(
        function (response) {
            $scope.data.activities = response.data;
        },
        function (response) {
          // error handling
        }
    );

从数据库中获取数据。在我的PHP

<?php 
include('dbconnect.php');

$result = $conn->query("SELECT * FROM Activities WHERE EventID =1;");

$outp = "";

while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
    if ($outp != "") {
        $outp .= ",";
    }       
    $outp .= '{"ActivityDate":"'  . $rs["ActivityDate"] . '",';     
    $outp .= '"StartTime":"'  . $rs["StartTime"] . '",';        
    $outp .= '"EndTime":"'  . $rs["EndTime"] . '"}';
}   
$outp ='['.$outp.']';
$conn->close();

echo($outp);
?>

从数据库中获取日期字符串。数据的一个例子是这样的:

Thu Jan 01 1970 11:11:00 GMT + 0800(马来半岛标准时间)

因为我使用ng-repeat{{ActivityDate||date:"dd/MM/yyyy"}}来访问数据以使其显示在视图上,所以我无法使用new Date()手动转换它来执行日期对象。

我已尝试将新日期添加到生成的json中,但它不起作用:

$outp .= '"ActivityDate": new Date("'. $rs["ActivityDate"] . '"),';

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

最简单的格式化日期服务器端,就像您希望它在客户端上显示一样。

一个选项:

date('d/m/Y', strtotime($rs["ActivityDate"]));

以下是一个例子:https://3v4l.org/6Xv03

附注:我建议您更改生成JSON的方式。首先构建一个PHP数组,然后json_encode。这将避免潜在的JSON格式问题。

类似的东西:

$output = [];
while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
    $output[] = [
        "ActivityDate" => date('d/m/Y', strtotime($rs["ActivityDate"])),
        "StartTime" => $rs["StartTime"],
        "EndTime" => $rs["EndTime"]
    ];
}   

$conn->close();

echo(json_encode($output));

然后正如一位评论者提到的那样,添加标题以指示您的内容类型会有所帮助:

header("Content-Type: application/json");
echo(json_encode($output));