2012-07-26 12 views
6

Witaj, muszę obliczyć średni czas między niektórymi DateInterval.Średnia dataInterval php

Właściwie mam trochę Dateinterval tak:

for ($i = 0 ; $i < count($startDate) ; $i++) 
    { 
      $diffTable[] = date_diff($finishDate[$i], $startDate[$i]); 
      echo $diffTable[$i]->format("%Y-%M-%d %H:%i:%s"); 
    } 

Oto wynik:

00-00-0 00:13:17 
00-00-0 00:7:47 
00-00-0 00:7:14 
00-00-0 00:10:39 

muszę obliczyć średni czas między tym odstępach czasu. Tutaj jest tylko minuta i sekunda, ale może to być miesiąc lub rok.

Nie mogę znaleźć dobrego sposobu na łatwe obliczenie. mogę po prostu dodać każdy dateInterval z konwersją tak:

sec + 60xmin + 3600xHour ...

je i grać z Modulo (%).

Ale mam nadzieję, że jest inny sposób?

Odpowiedz

1

Powinieneś pomnożyć minuty przez 60, godziny z 3600 itd., Aż pozostaną ci tylko sekundy. Stamtąd łatwo obliczyć średnią.

+0

Wiem, że mogę to obliczyć, ale szukam innej drogi ... –

-1

Proszę odnieść ten link http://php.net/manual/en/function.date-diff.php

Istnieje kilka funkcji, dostępnych w różnicy data user/programisty Note.

Wypróbuj je. Mam nadzieję, że jedno z nich ci pomoże.

+0

Szukam, ale nie mogę znaleźć czegoś, co może mi pomóc ... –

+0

Szukaj "eugene at ultimatecms dot co kropka za "na tej samej stronie. Myślę, że funkcja date_diff ($ start, $ end = "NOW") pomoże ci. – pinaldesai

+0

Które z tych funkcji pomogą Ci odpowiedzieć na pytanie? Czy możesz podać przykład demonstrujący, jak wziąć funkcję różnicowania daty i wykonać na niej średnią, a nawet podział? – Rikki

1

Ok untif znalazłem czegoś lepiej wystarczy napisać tak:

function dateIntervalToSecond($interval) 
    { 
     return $interval->y  * 31556926 
       + $interval->m * 2629743 
       + $interval->d * 6400 
       + $interval->h * 3600 
       + $interval->i * 60 
       + $interval->s; 
    } 

to nie jest idealne, ale lepsze to niż nic.