我有一个网站,用户输入的数据包括小时数,例如他们输入'1:00'(含义= 1小时)和'00:15'(含义= 15分钟)和'2:30'(含义= 2小时30分钟。)
现在我需要向他们展示他们总共进入了多少小时,当我通过在循环中执行$ count + = $ time来计算它时我得到了正确的数字但是没有在''后面站着什么: ”。
1:00 + 00:15 + 2:30将变为'3',而应该是3:45。
我该怎么做?现在我正在考虑它,如果它超过60,我还需要它将第一个数字加1(新的一小时)。
感谢。
答案 0 :(得分:2)
首先,计算分钟数,然后计算这些分钟的小时数并将其添加到小时数:
<?php foreach ($data as $entry) {
list($hour, $minutes) = explode(':', $entry);
$total_hours += $hour;
$total_minutes += $minutes;
}
$hours_from_minutes = floor($total_minutes / 60);
$total_hours += $hours_from_minutes;
$total_minutes -= $hours_from_minutes * 60;
echo "$total_hours:$total_minutes"
答案 1 :(得分:1)
一个简单的解决方案,支持从00:00:00到00:00和00
的所有内容$times = ['00:15', '01:00:13', '24:43:12', '00:00:34'];
$total_seconds = 0;
$total_minutes = 0;
$total_hours = 0;
foreach ($times as $time) {
$array = explode(':', $time);
switch (sizeof($array)) {
case 3:
$total_seconds += (int) $array[2];
case 2:
$total_minutes += (int) $array[1];
case 1:
$total_hours += (int) $array[0];
break;
default:
throw new Exception('got more than expected!');
}
}
$total_minutes += floor($total_seconds / 60);
$total_seconds %= 60;
$total_hours += floor($total_minutes / 60);
$total_minutes %= 60;
printf('%dh %dm %ds', $total_hours, $total_minutes, $total_seconds);
答案 2 :(得分:0)
// upd coz strtotime不适用于此问题
尝试使用DateIntervals,它们可能会对您有所帮助 http://php.net/manual/ru/class.dateinterval.php