从PHP中的时差总和中获取总小时和分钟

时间:2019-04-11 11:54:48

标签: php

我有一个表来存储机器的启动和停止记录

 ---------------------------------------
|   machine_start   |   machine_stop    |
 ---------------------------------------
|       11:00 AM    |       11:00 PM    |
 ---------------------------------------
|       12:00 AM    |       01:00 PM    |
 ---------------------------------------

现在,我想通过首先获取machine_stop和machine_start时间之间的差并通过遍历表记录以获取总时间来获得机器的总运行时间。

我在这里尝试过

$machine_total_time = 0;
foreach ($machine_data as $data){
    $machine_total_time += strtotime($data->machine_stop) - strtotime($data->machine_start);
}
var_dump(date("H:i", $machine_total_time));

它将显示'H'的最高23小时。我想显示来自 $ machine_total_time 的总时数和分钟数。怎么做。谢谢。

2 个答案:

答案 0 :(得分:0)

您可以使用gmdate()函数:

$minsec = gmdate("i:s", $machine_total_time); 
$hours = gmdate("d", $machine_total_time)*24 + gmdate("H", $machine_total_time);

$time = $hours . ':' . $minsec; // 56:12:12

答案 1 :(得分:0)

运行此代码,总输出应为25小时,

$machine_total_time = 0;
foreach ($machine_data as $data) {
    $time1    = new DateTime(date("H:i:s", strtotime($data['machine_stop'])));
    $time2    = new DateTime(date("H:i:s", strtotime($data['machine_start'])));
    $interval = $time1->diff($time2);
    $machine_total_time += $interval->h;
}
echo $machine_total_time;

interval documentation,请参阅查看从间隔中获取数据的选项。