Dodawanie czasu

0

Witam

mam gdzieś jakiś uszczypliwy błąd z dodawniem czasu, a mianowicie już z przygotowanej wcześniej tablicy z czasem :

Array
(
    [0] => 02:30:00
    [1] => 01:00:00
    [2] => 00:45:00
    [3] => 00:05:00
)

dodaję w prostej pętli czas do siebie :

if ( count($array_parse_time) > 0 ) {
    $sum_tasktime = NIL;
    for ($i = 0; $i < count($array_parse_time); $i++) {                                
            $tmp_sec = strtotime('01.01.1970 ' . $array_parse_time[$i]. ' GMT');
            $sum_tasktime = $sum_tasktime + $tmp_sec;
            $result = date('H:i:s', $sum_tasktime);    
    }
}

ale otrzymuje taką, błędną wartość : $result: 05:20:00

0

Po co konwertować na timestamp, skoro potrzebujesz tylko bezwzględną wartość czasu?
Byleby działało, można tak:

$times = array('02:30:00', '01:00:00', '00:45:00', '00:05:00');
$sum   = array(
        0 => 0, //godziny
        1 => 0, //minuty
        2 => 0  //sekundy
    );

foreach ($times as $time)
{
    $t = explode(':', $time);
    for ($i = 2; $i > -1; $i--)
    {
        $sum[$i] += (int)$t[$i];
        if ($sum[$i] > 59 and $i > 0)
        {
            $sum[$i - 1] += floor((int)$sum[$i] / 60);
            $sum[$i] = (int)$sum[$i] % 60;
        }
    }
}

echo sprintf('%d:%02d:%02d', $sum[0], $sum[1], $sum[2]); //4:20:00

Osobiście stworzył bym klasę, która przy okazji waliduje wprowadzane wartości i może jeszcze pozwala formatować wyjście...

0

niby tak, można zrobić tak jak podałeś, co jest poprawne - dzięki ! ale też jeśli mam dwa timestamp, które dodaje do siebie a później wyciągam za pomocą fun. date czas, to powinno się zgadzać, a tak nie jest, mam na myśli mktime

0

zamień NIL na 0 co

0

Nie bardzo wiem, co chcesz otrzymać dodając do siebie dwa timestampy.
Otrzymanie różnicy timestampów jest nawet bardziej banalne:

$today     = 1338289082;
$yesterday = 1338222873;
$delta     = $today - $yesterday;

$hours   = floor($delta / 3600);
$minutes = floor(($delta % 3600) / 60);
$seconds = floor($delta % ($hours * 3600 + $minutes * 60));

Ale nadal nie mam pojęcia o co chodzi.

0

Dla PHP 5.3 mozna wykorzystac metode: Add()

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0