簡體   English   中英

將JSON轉換為日期對象

[英]Turning JSON into date object

我在這里有要求

$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);
?>

從數據庫獲取日期字符串。 數據示例如下:

1970年1月1日星期四11:001:00 GMT + 0800(馬來半島標准時間)

因為我正在使用ng-repeat{{ActivityDate||date:"dd/MM/yyyy"}}來訪問數據以使其在視圖上顯示,所以無法使用new Date()手動將其轉換為日期對象。

我試圖將新日期添加到這樣產生的json中,但是它不起作用:

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

正確的做法是什么?

格式化日期服務器端可能是最簡單的方式,即您希望它在客戶端上顯示的方式。

一種選擇:

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));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM