2010-05-31 64 views
5

任何人都可以告訴代碼有什麼問題。DateTime對象有什麼問題

$timezone = "Asia/Karachi"; 
$date = new DateTime($when_to_send, new DateTimeZone($timezone)); 
$date = $date->setTimezone(new DateTimeZone('GMT')); 
$when_to_send = $date->format('Y-m-d H:i:s'); 

錯誤:非對象

回答

11

$date = $date->setTimezone(new DateTimeZone('GMT'));

使得$ date變量爲空,你只需要調用它:

$date->setTimezone(new DateTimeZone('GMT'));

+0

waoo真棒它也解決了我的問題。謝謝你太多了 – 2016-09-02 08:10:39

6

上調用一個成員函數的格式()如果你沒有運行至少PHP 5.3.0(寫在the manual,這你一定讀前問,對嗎?),setTimezone將返回NULL而不是修改後的DateTime。你至少運行PHP 5.3.0嗎?

+0

它gotto小於5.3,因爲除去分配新建分配FY解決問題 – 2010-05-31 13:03:04

+0

您可以通過在命令行中輸入'PHP -v'得到您的版本。 – Erik 2010-05-31 13:53:33

2

按照manualsetTimeZone會返回一個DateTime對象或FALSE如果可以」 t設定時區。實際上不需要保存回報,因爲它會修改您傳遞給它的DateTime對象。

也許你應該檢查是否setTimezone$date對象設置爲它的返回值之前成功:

$timezone = "Asia/Karachi"; 
$date = new DateTime($when_to_send, new DateTimeZone($timezone)); 

if (! ($date && $date->setTimezone(new DateTimeZone('GMT')))) { 
    # unable to adjust from local timezone to GMT! 
    # (display a warning) 
} 

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

感謝大家誰幫助,但只可以標記正確的答案。正確的代碼是

$timezone = "Asia/Karachi"; 
$date = new DateTime($when_to_send, new DateTimeZone($timezone)); 
$date->setTimezone(new DateTimeZone('GMT')); 
$when_to_send = $date->format('Y-m-d H:i:s');