PHP左时间错误

PHP左时间错误,php,timezone,Php,Timezone,我在显示剩余时间方面遇到了一些问题 这是我的代码: echo date( "H:i:s", $show_job['deadline'] - time() ); 我的服务器时区是:欧洲/阿姆斯特丹 这就是进入数据库的时间: $currentTimestamp = time(); $in24hourstime = strtotime("+24 hours", $currentTimestamp); 例如,问题是我的一些用户得到的是10小时而不是24小时。我猜这些用户来自不同的时区。我在伦敦 是什

我在显示剩余时间方面遇到了一些问题

这是我的代码:

echo date( "H:i:s", $show_job['deadline'] - time() );
我的服务器时区是:欧洲/阿姆斯特丹

这就是进入数据库的时间:

$currentTimestamp = time();
$in24hourstime = strtotime("+24 hours", $currentTimestamp);
例如,问题是我的一些用户得到的是10小时而不是24小时。我猜这些用户来自不同的时区。我在伦敦


是什么导致了这个错误?感谢高级版。

首先,最好使用PHP日期函数在脚本中显式设置默认时区,如下所示:

date_default_timezone_set('Europe/London');

这确保所有日期计算使用正确的内部时区。向用户显示日期时,您可以相应地调整其时区的时间

稍微修改一下您的示例,就可以创建两个带有UNIX时间戳的变量,即现在和24小时内:

$now = time();
$in24hourstime = strtotime("+24 hours", $now);  
要计算差值,我们可以从另一个中减去一个,以秒为单位计算差值:

 $remaining = $in24hourstime - $now;     
在我们的示例中,$剩余的值是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类很有用,因为在我看来,它比内置的time()和date()提供了许多好处,并且更容易处理时区:


请参阅:

主题:为什么不
+1天
<代码>+24小时将在支持夏季/冬季时间的时区中导致问题。我认为这可能不是错误。我在其他地方使用了这个代码,这是2分钟,一些玩家可以得到11小时2分钟。不过我会试试这个,谢谢。
$in24小时=$currentTimestamp+86400这会有什么不同?时区实际上是服务器默认时区。我实际上使用了一种类似于你的方法,到目前为止,它似乎是有效的。如果没有,我会用你的,但你的答案!