3

我用了 :

<?php 
echo date("H:i:s", $var_time_diff);
?>

在两个日期之间构建一个时间......在我的脑海中是
$var_time_diff = 36000 = display 10:00:00 for 10 hours

但实际上

<?php echo date("H:i:s", 0);?> 

显示01:00:00而不是00:00:00

所以我们有

$date_a = "18:15:04";
$date_b = "23:15:04";
$diff = strtotime($date_b) - strtotime($date_a);

目前一切正常$diff是 5 小时,但如果我们这样显示日期:

echo date("H:i:s", $diff);

会的"06:00:00"

那么我的 php 配置有问题还是 php 函数日期的正常行为?

4

4 回答 4

5

date()函数使用您当前的时区。如果您想忽略您配置的时区,请使用date_default_timezone_set()或使用gmdate().

于 2010-12-07T17:25:53.223 回答
2

您在 UTC 以外的某个时区。尝试:

<?php
date_default_timezone_set('UTC');
echo date("H:i:s",0) . "\n";
于 2010-12-07T17:28:56.937 回答
0

我不确定为什么,但date在您的示例中输出当前小时,首先从您的秒数创建一个时间戳,它可以工作。不过,我将按照这个问题进行更深入的解释。

$date_a = "18:15:04";
$date_b = "23:15:04";
$diff = strtotime($date_b) - strtotime($date_a);
echo date("H:i:s", mktime(0,0,$diff));

编辑:啊,所以它会调整到您当前的时区,所以也会调整mktime,所以效果被否定了。

于 2010-12-07T17:28:43.020 回答
-1

使用 mktime,分钟 1 小时 @ $diff

于 2010-12-07T18:02:26.907 回答