Znalazłem ten kod, ale jest błąd, którego nie mogę znaleźć

function sum_time($tempo1, $tempo2) {
    $times = array($tempo1, $tempo2);
    $seconds = 0;
    foreach ($times as $tempo)
    {
        list($hour, $minute, $second) = explode('.', $tempo);
        $seconds += $hour*3600;
        $seconds += $minute*60;
        $seconds += $second;
    }
    $hours = floor($seconds/3600);
    $seconds -= $hours*3600;
    $minutes  = floor($seconds/60);
    $seconds -= $minutes*60;
    // return "{$hours}:{$minutes}:{$seconds}";
    return sprintf('%02d.%02d.%02d', $hours, $minutes, $seconds);
}

echo sum_time('3.0.00', '4.83.00');

Wynik wynosi 08.23.00 zamiast 7.83,00

Prawdopodobnie problemem jest kodu sumy razy w HH.MM.SS, podczas gdy chcę sumować Tims w HH.CC (godziny.Cents)

0
Massimo D. N. 21 listopad 2020, 19:13

1 odpowiedź

Najlepsza odpowiedź

Możesz go przekonwertować, aby nie używać sekund, ale w ten sposób centy,

<?php
function sum_time($tempo1, $tempo2) {
    $times = array($tempo1, $tempo2);

    $hours = 0;
    $cents = 0;

    foreach ($times as $tempo)
    {
        list($hour, $cent) = explode('.', $tempo);
        $hours += $hour;
        $cents += $cent;
    }

    $hours += floor($cents / 100);
    $cents = $cents % 100;

    // return "{$hours}:{$cents}";
    return sprintf('%02d.%02d', $hours, $cents);
}

echo sum_time('3.0', '4.83');
0
User1010 21 listopad 2020, 16:47