2017-07-21 48 views
0

我是相當新的PHP所以請原諒我,如果這是設置PHP日期時間似乎並不被觀察時區

我在遇到一個問題,我還沒有發現一個愚蠢的錯誤我們目前我們使用的系統是strtotime,它比我們的實際設置時間提前一小時返回了我們的日期。例如,下午1:15時,我將時區設置爲歐洲時區,而不是格林威治時間。

我讀過strotime有這個問題,但是如果我嘗試設置它,我不能得到它來觀察不同的時區。

因此我嘗試使用PHP DateTime代替。

用戶輸入時間,他們將它選爲1:15 PM,但我們希望將其存儲爲13:15。所以我這樣做:

$t = DateTime::createFromFormat('h:i A', $venue['startTime']); 
$t_24 = $t->format('H:i:s'); 

然後我嘗試創建我的Date對象

$d = DateTime::createFromFormat('d-m-Y H:i:s', $venue['startDay'] . ' ' . $t_24); 
$d->setTimezone(new DateTimeZone('America/New_York')); 
echo ' ' . $d->getTimestamp(); 

試圖對象設置後設置時區,因爲很明顯,如果你添加的時區,因爲它不工作第三個參數createFromFormat

我的電腦目前正在觀測目前GMT + 1的歐洲時間,因爲我們在英國觀察夏令時,我選擇了通過我們的系統設置的時間爲1:15 pm,因爲我我設定了我期待的時間郵票輸出相當於早上7點15分,因爲它比歐洲時間晚六個小時,但是當我將時間戳1500639300轉換成時,它仍然等於2:15 PM。可能做了一些愚蠢的事情,但無法弄清楚什麼?任何幫助將不勝感激:)

回答

1

時間戳沒有時區 - 他們總是在UTC時間。如果你想保存時區相關的數據使用另一種格式!例如保存在H:i:s中,因爲你需要它。

相關問題