2016-06-07 33 views
0

我來到這裏談到JSON到日期對象

$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:11:00 GMT + 0800(馬來半島標準時間)

因爲我使用ng-repeat{{ActivityDate||date:"dd/MM/yyyy"}},使之出現訪問數據在視圖上,我無法將其轉換爲使用new Date()手動執行日期對象。

我已經嘗試添加新的日期爲這樣產生的JSON,但它不工作:

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

什麼是做正確的方式?

+1

的問題是「打開JSON到日期對象」, JSON代碼在哪裏? –

+2

不要將字符串混淆在一起以生成JSON。 PHP具有'json_encode'功能。 – Quentin

+1

你正在輸出JSON,但你忘了包含'header(「Content-Type:application/json」);'所以你的PHP將會報告它是HTML而不是JSON。 – Quentin

回答

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

是否有任何原因轉換日期是01/01/1970(馬來半島標準時間)? – Lester

+0

你的日期字符串是「1970年1月1日」。無論時區如何,將格式設置爲「d/m/Y」將導致「01/01/1970」。你期望它會是什麼?我們並未將其轉換爲其他時區。 – jszobody

+0

對不起,忘了提及我用不同的日期不同的一個。 https://開頭3v4l。org/DuvX7​​ – Lester