我正在使用 type 字段在数据库中节省时间time
。我正在循环遍历一组数据并希望能够对其进行求和。
我有以下方法:
<?php sumaHoras = 0; ?>
<?php while ($row = mysqli_fetch_assoc($result)) { ?>
$value_horario = $row['total'];
$parts = explode(':', $value_horario);
$resultado = ($parts[0] + ($parts[1]/6) / 10 . PHP_EOL);
$sumaHoras = $sumaHoras + $resultado;
} ?>
<?php echo $sumaHoras; ?>
如果我的数组中有 3 个小时,$row['total']
那么这些00:30:00
++的总和会给我一个结果。应该给我或。04:30:00
01:00:00
1.50
7:00
07:00:00
我一直在查看一些代码,但没有一个对我有用。
我认为推荐的方法是以秒为单位进行求和,然后将总计转换为所需的格式,如下所示:
根据对您需求的了解并在@Oswuell 的帮助下补充,如果您需要添加几个不同的时间,您可以这样做:
所以你可以根据需要添加尽可能多的时间......
我希望它对你有用,告诉我们!
试试这个,我用它,它非常适合我
首先,您必须删除“:”才能将它们转换为整数。
可能最简洁和最优雅的解决方案是在 SQL 代码本身中进行求和并直接得到结果:
我首先使用 . 将字段转换
TIME
为秒(从00:00:00
)开始TIME_TO_SEC()
。对于所有寄存器的总和,我通过函数进行逆计算(将经过的秒数从小时转换00:00:00
为小时)SEC_TO_TIME()
。与标记为正确的答案不同,如果总和超过 24 小时,则结果将以小时为单位保持一致,并且不会从 0 重新开始。
您的 PHP 代码将是:
您可以在此处在线查看示例。
我通常使用 DateTime() 对象并创建任何日期来设置我感兴趣的时间,然后使用“修改”功能增加时间并使用“格式”提取它。
在这个例子中,我只使用小时,但你可以很容易地减去整个日期、分钟和任何你想要的东西,而不需要复杂的计算。
您可以根据自己的兴趣组合格式,如果您发现它可以增加或减少超过 24 小时,则创建两个日期,然后减去它们以查看小时数的差异等。
参考官方文档很有趣,因为它被完美地解释了:
http://php.net/manual/en/class.datetime.php
http://php.net/manual/en/datetime.modify.php