2012-02-01 5 views
1

Все, Я создаю несколько массивов JSON, перейдя по моей базе данных и заполняя некоторые значения. Код для этого:Преобразование PHP и JSON в javascript Date

$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

+0

вы должны пройти через это и запустить что-то вроде 'row.start = new Date (row.start);' –

ответ

3

попробовать это: функция

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

Использовать дату РНР() для создания строки даты.

$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

Этот формат является одним из Supported Date and Time Formats в PHP DateTime class. Это означает, что вы можете легко construct a PHP DateTime object из вашего значения DATETIME MySQL.

например. для «запуска» даты

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

Вы можете затем использовать метод DateTime::format на вновь созданный объект DateTime, чтобы распечатать его в виде строки в любом формате.

например. если вы хотите поставить дату в $ 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

Смежные вопросы