2016-08-01 3 views
1

У меня есть следующие строки кода, я конвертирую часовой пояс edt в Asia/Shanghai (из руководства php), а затем форматирование для отображения в виде строки. Теперь, если я делаю var_dump или getTimezone() в datetime obj, я получаю что-то вроде (2), что является правильным. Но в строке он по-прежнему показывает edt как часовой пояс. Не знаю, почему это так. Кто-нибудь еще испытывает это? Есть идеи? Благодаря!strtotime не помещает правильный часовой пояс из datetime obj

(1) $ format = 'Y-m-d H: i: s';

$datetime = datetime::createfromformat($format,$appointment['appointment_datetime']); 
///patient default shows time in China Standard 
$datetime = $datetime->setTimezone(new DateTimeZone('Asia/Shanghai')); 

$display = date('l jS F Y \a\t\ g:ia T', strtotime($datetime->format($format))); 

(2) объект (DateTime) [8]

public 'date' => string '2016-08-02 05:00:00.000000' (length=26) 
public 'timezone_type' => int 3 
public 'timezone' => string 'Asia/Shanghai' (length=13) 

ответ

2

Это потому, что вы используете ->format для вывода время в виде строки, без часового пояса, а затем с помощью date() переформатировать, который отменяет любые настройки часового пояса, которые вы пытались установить.

Вы можете просто сделать $display = $datetime->format('l jS F Y \a\t\ g:ia T');

+0

Спасибо! Не уверен, как я пропустил эту глупую линию, пытаясь совместить слишком много разных результатов переполнения стека: P – nick

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