2012-02-01 70 views
1

全部, 我通過遍歷數據庫並填充一些值來創建一些JSON數組。代碼這樣做是:將PHP和JSON編碼轉換爲Javascript日期

$return_arr = array(); 
$fetch = mysql_query("SELECT * FROM calendar_events"); 
while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) { 
    $row_array['id'] = $row['id']; 
    $row_array['title'] = $row['title']; 
    $row_array['start'] = $row['start']; 
    $row_array['end'] = $row['end']; 
    $row_array['allDay'] = $row['allDay']; 
    $row_array['description'] = $row['description']; 

    array_push($return_arr,$row_array); 
} 
echo json_encode($return_arr); 

這工作正常,但它不正確顯示日期。當我找到那些有日期顯示的例子正確的,它看起來像這樣:

{ 
    title: 'Birthday Party', 
    start: new Date(y, m, d, 12, 0), 
    end: new Date(y, m, d, 14, 0), 
    allDay: false 
} 

我如何使用PHP來格式化我的約會像這樣的,所以它看起來是相同的。我的數據作爲DATETIME存儲在數據庫中。任何想法將不勝感激!

謝謝!

+0

'new Date(y,m,d,12,0)'當然不是* JSON *。這是Javascript代碼。 – deceze 2012-02-01 04:05:54

+0

你應該通過這個並運行'row.start = new Date(row.start);' – 2014-12-15 12:44:52

回答

3

試試這個:

$row_array['start'] = date('Y-m-d', strtotime($row['start'])); 
$row_array['end'] = date('Y-m-d', strtotime($row['end'])); 
0

使用PHP的date()函數來創建日期字符串。

$dateStr = date("Y-m-d", $time); 

如果您需要傳遞js日期對象,那麼這不是您的解決方案。

1

從MySQL中檢索的日期(在$ row數組中)的形式爲'YYYY-MM-DD HH:MM:SS',因爲它們與MySQL DATETIME類型一起存儲。

「DateTime類型用於包含日期和時間 份值的MySQL檢索和顯示DATETIME值 'YYYY-MM-DD HH:MM:SS'。格式」 - The DATE, DATETIME, and TIMESTAMP Types - MySQL 5.5 Reference Manual

這種格式是PHP DateTime classSupported Date and Time Formats之一。這意味着你可以很容易地從你的MySQL DATETIME值中獲得construct a PHP DateTime object

例如您的「開始」日期

$start = new DateTime($row['start']); 

然後,您可以使用您的新創建的DateTime對象的DateTime::format方法打印出來爲你喜歡的任何格式的字符串。

例如如果你想把日期到$ row_array形式DD-MM-YYYY

$row_array['start'] = $start->format('d-m-Y'); 

還要注意它的建議使用MySQL Improved Extension - mysqli用於連接到MySQL數據庫。

「如果您使用的是MySQL 4.1.3或更高版本,強烈建議您改用mysqli擴展名。」 - php.net - mysqli overview