如何计算两个时间戳的小时数之间的差异?

时间:2014-05-22 18:44:13

标签: php timestamp strtotime

我正在尝试创建一个时间表页面,员工可以在其中输入时钟。在它们超时后,计算它们的总小时数,因此,time2(时钟输出)减去time1(时钟输入)。我在这里使用了一段时间,因为我只是想知道如何做出差异本身然后我可以弄清楚如何做其余的(其他一切工作除了总数)。我提供了我的代码和结果。如果您可以解决小时问题,我将非常感谢您发布代码和结果。有人建议我在第54行使用abs()但它仍然不起作用。感谢您的时间。

$time1 = strtotime('09:10:04');
$time2 = strtotime('12:16:06');
$diff = $time2 - $time1;
echo "Start Time: ".date('h:i:s', $time1)."<br>";
echo "End Time: ".date('h:i:s', $time2)."<br>";
echo "Total hours: " . date('h:i:s', $diff);

开始时间:09:10:04

结束时间:12:16:06

总小时数:10:06:02

2 个答案:

答案 0 :(得分:0)

我喜欢DateTime这个

 $time1 = new DateTime('09:10:04');
 $time2 = new DateTime('12:16:06');
 $diff = $time1->diff($time2);
 echo $diff->format('%h hours');

答案 1 :(得分:0)

我认为,你的问题正在发生,因为你住在时区+7。 当您通过strtotime()提取时间时,系统将两次都转换为UTC。 当你减去t2-t1时,任何时区偏移都会变为零。

但是,当您打印结果时,date()会向您的本地时区添加偏移量, 并打印+7小时。

为了保留这个添加,只需在程序开头写一次:

date_default_timezone_set('UTC');