首先它是一个好主意,使用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