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


How to calculate the difference between the hours of two timestamps?

我试图创建一个员工可以打卡和打卡的时间表页面。在他们打卡下班后,计算他们的总小时数,因此是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);

Start Time: 09:10:04

结束时间:12:16:06

总小时数:10:06:02

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

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

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

date_default_timezone_set('UTC');

我喜欢DateTime

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