PHP рассчитать общее количество часов, минут и секунд - PullRequest
0 голосов
/ 16 января 2019

У меня приблизительно несколько часов, которые состоят из нескольких часов - нескольких минут - нескольких секунд. примерно так: 170: 156: 230, что означает 170 часов 156 минут и 230 секунд. Теперь, как я могу превратить это значение в нечто подобное: 172: 59: 59. общее количество секунд не должно превышать 59 секунд. Если больше, количество переполнения увеличится до минуты. я бы сделал то же самое для суммы минут: то есть сумма минут никогда не превышает 59, если это было так, сумма переполнения будет добавлена ​​к общему количеству часов. Я уже сделал это (что, конечно, не идеально)

$raw_times = ['h'=>102, 'm'=>353, 's'=>345];

foreach (array_reverse($raw_times) as $type => $value) {
     switch ($type) {
         case 's':
             if (60 < $value) {
                 while ((60 < $value) && (0 <= $value)) {
                     $sec_overlap += 60;
                     $value -= 60;
                 }

                $raw_times['s'] = $value;
                $raw_times['m'] += $sec_overlap;
                return $raw_times;
            }
                break;
                case 'm':
                    // some thing like above...
                    break;
            }
        }

1 Ответ

0 голосов
/ 16 января 2019

Простой расчет путем деления 60.

function convert($param) {
    $hms = array_map('intval', explode(':', $param));
    $hms[1] += floor($hms[2] / 60);
    $hms[2] %= 60;

    $hms[0] += floor($hms[1] / 60);
    $hms[1] %= 60;

    return implode(': ', $hms);
}

echo convert('170: 156: 230 ');

Если вы используете параметр в качестве массива:

<code>function convert($hms) {
    $hms['m'] += floor($hms['s'] / 60);
    $hms['s'] %= 60;

    $hms['h'] += floor($hms['m'] / 60);
    $hms['m'] %= 60;

    return $hms;
}

print '<pre>';
print_r(convert(['h'=>102, 'm'=>353, 's'=>345]));
print '
';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...