2016-08-01 44 views
1

我有以下幾行代碼,我將edt時區轉換爲亞洲/上海(從PHP手冊),然後格式化顯示爲一個字符串。現在,如果我在datetime obj上執行var_dump或getTimezone(),我會得到類似(2)的內容,這是正確的。但是在字符串中,它仍然將edt顯示爲時區。不知道爲什麼它這樣做..任何人都體驗到這一點?有什麼想法?謝謝! (1)$ format ='Y-m-d H:i:s';strtotime不從日期時間正確的時區對象

$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)對象(日期時間)[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