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

从php中的时间差总和中获取总小时和总分钟,php,Php,我有一个表来存储机器启动和停止这样的记录 --------------------------------------- | machine_start | machine_stop | --------------------------------------- | 11:00 AM | 11:00 PM | --------------------------------------- | 12:00 AM |

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

 ---------------------------------------
|   machine_start   |   machine_stop    |
 ---------------------------------------
|       11:00 AM    |       11:00 PM    |
 ---------------------------------------
|       12:00 AM    |       01:00 PM    |
 ---------------------------------------
现在我想通过首先得到机器停止时间和机器启动时间之间的差值来得到机器的总运行时间,然后通过表格记录循环得到总时间

我试过了

$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\u total\u time的总小时和分钟数。如何做到这一点。谢谢。

您可以使用
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

您可以使用
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

运行此代码,总输出应为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;

请参阅从间隔获取数据的选项。

运行此代码,总输出应为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获取数据的选项。

如果机器在上午11点启动,两天后在下午4点停止,会发生什么情况?如果没有日期,你将不知道它运行了多长时间。:)问得好。从你的观点来看,你是对的。但这只是一个例子,这样我才能理解基本问题。@Joni he必须将秒转换为小时,你所链接的不是op想要的。这个问题的可能重复在这个网站上被问了几十次甚至几百次。你的代码很好。你所需要的只是使用副本中描述的方法之一来输出你的时间。如果机器在上午11点启动,下午4点停止,会发生什么几天后?如果没有日期,你将不知道它运行了多长时间。:)问得好。从你的观点来看,你是对的。但这只是一个例子,这样我才能理解基本问题。@Joni he必须将秒转换为小时,您链接的内容不是op想要的内容此问题的可能副本在此网站上被询问和回答了几十次(如果不是几百次的话)。您的代码很好。您所需要的只是使用副本中描述的方法之一来输出您的时间。已尝试但不起作用。:)您的值是多少?如果我只打印没有gmdate或date,则显示90000,或使用这两个功能显示01:00:00我的错误,24小时后小时数重置,但我已改进了答案。已尝试但未工作。:)你有什么价值?如果我只打印没有gmdate或date,那么它显示90000或使用这两个功能,它显示01:00:00 my bad,小时数在24小时后重置,但我改进了我的答案。