行为<! - ?php echo date(“H:i:s”,0);? - >

时间:2010-12-07 17:22:06

标签: php date datediff

我用过:

<?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 个答案:

答案 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