9

我一直在寻找几个小时的答案,但我找不到答案。

我正在写一个简单的script. 用户设置他们的工作开始和结束时间。例如,有人从 8:00 工作到 16:00。我怎样才能减去这个时间来看看这个人工作了多长时间?

我正在尝试strtotime();但没有成功...

4

3 回答 3

29

更好一点的是以下内容:

$a = new DateTime('08:00');
$b = new DateTime('16:00');
$interval = $a->diff($b);

echo $interval->format("%H");

这会给你几个小时的差异。

于 2011-03-28T18:51:08.370 回答
9

如果你得到有效的日期字符串,你可以使用这个:

$workingHours = (strtotime($end) - strtotime($start)) / 3600;

这将为您提供一个人一直在工作的时间。

于 2011-03-28T18:47:34.690 回答
2

另一种解决方案是通过 Unix-timestamp 整数值差异(以秒为单位)。

<?php
    $start = strtotime('10-09-2019 12:01:00');
      $end = strtotime('12-09-2019 13:16:00');

      $hours = intval(($end - $start)/3600);
      echo $hours.' hours'; //in hours

      //If you want it in minutes, you can divide the difference by 60 instead
      $mins = (int)(($end - $start) / 60);
      echo $mins.' minutues'.'<br>';
?>

如果您的原始日期以 Unix 时间戳格式存储,则此解决方案会更好。

于 2019-09-23T14:23:42.113 回答