3
我收到時間:我必須明確地用DateTimeZone重寫PHP的DateTime嗎?
0001-01-01T00:00:00.000Z
Greenwich Mean Time
我在一個DateTime保存爲:
$event->startTime = new DateTime($item->startTime, new DateTimeZone('GMT'));
這給了我:
protected 'startTime' =>
object(DateTime)[137]
public 'date' => string '0001-01-01 00:00:00' (length=19)
public 'timezone_type' => int 2
public 'timezone' => string 'Z' (length=1)
這意味着它忽略了時區。從文檔:
注:
在$時區參數和 當前時區都將被忽略,當 $時間參數要麼是UNIX 時間戳(如@ 946684800)或 指定一個時區(例如 2010-01-28T15:00:00 + 02:00)。
如果我事後重寫它:
$event->startTime->setTimezone(new DateTimeZone('GMT'));
我得到:
protected 'startTime' =>
object(DateTime)[137]
public 'date' => string '0001-01-01 00:00:00' (length=19)
public 'timezone_type' => int 3
public 'timezone' => string 'UTC' (length=3)
因此,響應說,時區必須是GMT/UCT是+ 0,但PHP決定TL;博士和我結束了我的默認php.ini時區+2。這不是錯的嗎?
無論如何,我將使用開始時間作爲倒計時,所以時區是至關重要的。我的問題是:我是否將時區覆蓋到UCT是正確的?當我打算使用DateTime :: diff時,是否會給我正確的時間?
由於PHP是一種服務器端語言,因此獲取Datetime對象總是最終成爲服務器端的時間,不是嗎? – 2011-06-08 10:10:48
是的,但是我必須堅持DateTime與事件的時區或服務器的時區? – Tjorriemorrie 2011-06-08 10:26:08