php的总小时数
问题描述:
我想用MySQL 00:00:00的格式来总结小时数,我用foreach对他们进行求和,但是当总和到达24:00:00时它就从00:00:00开始和我想的和要遵循的24:10:00,25:00:00,等php的总小时数
这是我的代码来概括他们:
foreach($hours as $h){
$sumaHoras = date('H:i:s', strtotime($sumaHoras) + strtotime($h->horas) - strtotime('00:00'));
}
答
的问题是,只有返回()的小时部分,你将删除大于 一整天的任何东西,所以它只会在00:00到23:59之间返回一些东西。您应该使用date()以外的其他东西,并且仅在所有秒数加起来时才使用。
因此,你应该尝试这样的事:
function sec2hours($seconds){
$units = array(
'hours' => 3600,
'minutes' => 60,
'seconds' => 1,
);
foreach($units as &$unit){
$quot = intval($seconds/$unit);
$seconds -= $quot * $unit;
$unit = $quot;
}
$str = array();
foreach($units as $name => $value){
$str[] = ($value === 0?'00':$value);
}
return implode(':',$str);
}
$sum = 0;
foreach($hours as $h){
$sum += strtotime($h->horas) - strtotime('00:00');
}
$sumaHoras = sec2hours($sum);
的第二个问题是的strtotime()上应结转到天像25:00小时返回false, 所以如果你只有一个像这样的输入,它会变成0 - strtotime('00:00'),最后你会得到一个巨大的负数。 但是,如果所有的输入都在00-23:00-59之间,那应该没问题。
+0
感谢您的回答。我会帮你的。 –
答
我认为这个代码有帮助
foreach ($timeArr $key=> $timevalue) {
$timesumArr[$key]=date('H:i:s', array_sum(array_map('strtotime', $timevalue)));
}
你必须从分钟和秒为整数separatly总结小时,然后一切都转换为小时。 – Vladislav
谢谢Valadislav –
如果它是有用的,听起来像一个答案,我会张贴它作为答案。 ) – Vladislav