我想计算两次之间的差异,其中一次是当前时间,另一次是HH:MM格式,总是在将来。
如果我只是从$ now中减去$ futuretime,那当然应该是一个正数。
直到......才能正常工作。
如果$ now现在是在下午或晚上,$ future future是,比如说,第二天早上7点,我怎么能强迫它了解未来的时间总是如此?
(用于计算工作时间内每半小时发生一次的时间,然后停止到第二天早上)
提前致谢!
答案 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)
您可以简单地将两个日期转换为时间戳,进行计算并将其转换为所需的格式,即天,小时和分钟。这很简单。