2014-03-13 57 views
1

我正在嘗試做一個簡單的倒計時,但它給錯誤的時間:「strtotime('明天') - 時間()」或「strtotime('明天') - strtotime('now')」將不會給出正確的時間,直到即將到來的午夜

$time_seconds_view = strtotime('tomorrow') - time(); echo date("H" . " \h\o\u\\r\s\, " . "i" . " \m\i\\n\u\\t\\e\s\, \a\\n\d " . "s" . " \s\\e\c\o\\n\d\s", $time_seconds_view); 

被吐出00 hours, 30 minutes, and 00 seconds

即使date_default_timezone_set($this->session->userdata('timezone'));設置爲America/Phoenix

應該吐出07 hours, 30 minutes, and 00 seconds

就好像PHP沒有考慮到我已經改變了默認時區。

我做錯了什麼?謝謝你的幫助!

回答

0

使用日期時間。日期數學更好。

$tomorrow = new DateTime('tomorrow'); 
$now = new DateTime(); 
$diff = $tomorrow->diff($now); 
echo $diff->format("%h hours, %i minutes, %s seconds"); 
// 7 hours, 12 minutes, 53 seconds 

See in action

+0

哇,謝謝!作品。但是,我的代碼出了什麼問題?所以困惑爲什麼它不能正常工作。 –

+0

此外,您的代碼[您的演示實際操作中]是否能夠從我那裏獲得正確的時區? –

+0

不確定。但是time(),strtotime(),date()等不適用於日期數學,因此非常明顯的原因很容易關閉。幸運的是DateTime()爲我們解決了這個問題。 –