我该如何计算?

时间:2013-12-06 10:30:59

标签: php time hour

我有一个网站,用户输入的数据包括小时数,例如他们输入'1:00'(含义= 1小时)和'00:15'(含义= 15分钟)和'2:30'(含义= 2小时30分钟。)

现在我需要向他们展示他们总共进入了多少小时,当我通过在循环中执行$ count + = $ time来计算它时我得到了正确的数字但是没有在''后面站着什么: ”。

1:00 + 00:15 + 2:30将变为'3',而应该是3:45。

我该怎么做?现在我正在考虑它,如果它超过60,我还需要它将第一个数字加1(新的一小时)。

感谢。

3 个答案:

答案 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