首先它是一個好主意,使用PHP日期函數像這樣明確設置默認的時區在你的腳本:
date_default_timezone_set('Europe/London');
見http://php.net/manual/en/function.date-default-timezone-set.php
這將確保所有的日期計算使用正確的內部時區。將日期顯示回用戶時,您可以相應地將時間調整到其時區。
修改您的例子稍微讓現在在24小時內創建一個UNIX時間戳兩個變量:
$now = time();
$in24hourstime = strtotime("+24 hours", $now);
要計算我們可以減去一個從其他的差異給我們在幾秒鐘的差別:
$remaining = $in24hourstime - $now;
在我們的例子中,$ remaining的值是86400秒。如果此值爲0或負數,我們可以假定截止日期已過。
if($remaining > 0) {
$hours = intval(intval($remaining)/3600);
$minutes = intval(($remaining/60) % 60);
$seconds = intval($remaining % 60);
echo $hours . ' hours, '.$minutes.' minutes and '.$seconds . ' seconds remaining!';
} else {
echo "Deadline has been met. No time remaining!";
}
順便說一句,你可能會發現使用PHP的DateTime類有用,因爲在我看來,它提供了內置的時間()和日期()和更簡單的方法很多好處處理時區:
見:http://php.net/manual/en/book.datetime.php
Offtopic:爲什麼不是'+1天'? '+24小時'將導致支持夏季/冬季時間的時區出現問題。 – Basti 2012-04-01 19:39:53
我不認爲這可能是錯誤。我在其他地方使用此代碼,這是2分鐘,一些球員得到11小時2分鐘。我會盡力而爲,謝謝。 – 2012-04-01 19:41:18
'$ in24hourstime = $ currentTimestamp + 86400;' – kijin 2012-04-01 20:30:28