日期之间的差异

时间:2010-03-28 18:00:11

标签: php time timestamp

我想计算两次之间的差异,其中一次是当前时间,另一次是HH:MM格式,总是在将来。

如果我只是从$ now中减去$ futuretime,那当然应该是一个正数。

直到......才能正常工作。

如果$ now现在是在下午或晚上,$ future future是,比如说,第二天早上7点,我怎么能强迫它了解未来的时间总是如此?

(用于计算工作时间内每半小时发生一次的时间,然后停止到第二天早上)

提前致谢!

3 个答案:

答案 0 :(得分:3)

如果它是负面的,只需添加一整天即可。假设$now$futuretime是时间戳(自午夜起以秒为单位存储),只需执行以下操作:

$diff = $futuretime - $now;
if ($diff < 0)
    $diff += 24 * 3600;

如果它们是HH:MM格式:

list($future_hours, $future_mins) = explode(":", $futuretime);
$futuretime = $future_hours * 60 + $future_mins;
list($now_hours, $now_mins) = explode(":", $now);
$now = $now_hours * 60 + $now_mins;
$diff = $futuretime - $now;
if ($diff < 0)
    $diff += 24 * 60;

当然后一种情况会以分钟为单位返回差异,而前者则以秒为单位返回差异。

编辑:正如安迪在评论中指出的那样,如果您关心夏令时的变化,这不是一个好的解决方案。请参阅他的解决方案以获得更好的方法。

答案 1 :(得分:2)

如果您使用的是PHP 5.3+,请使用PHP的DateTime

$d1 = new DateTime('14:52:10');
$d2 = new DateTime('12:12:10');

$diff = $d1->diff( $d2 ); 
var_dump( $diff );

答案 2 :(得分:0)

您可以简单地将两个日期转换为时间戳,进行计算并将其转换为所需的格式,即天,小时和分钟。这很简单。