我用过:
<?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函数日期的正常行为?
答案 0 :(得分:5)
date()
功能使用您当前的时区。如果您要忽略配置的时区,请使用date_default_timezone_set()
或使用gmdate()
。
答案 1 :(得分:2)
你在UTC以外的某个时区。尝试:
<?php
date_default_timezone_set('UTC');
echo date("H:i:s",0) . "\n";
答案 2 :(得分: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
也是如此,所以效果被否定了。
答案 3 :(得分:-1)
使用mktime,小时为1小时@ $ diff