2012-07-26 2 views
6

Ciao ho bisogno di calcolare un tempo medio tra alcuni DateInterval.Average dateInterval php

In realtà ho qualche DateInterval come questo:

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

Ecco l'output:

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

ho bisogno di calcolare il tempo medio tra questi intervalli. Qui è solo minuto e secondo, ma potrebbe essere Mese o anno.

Non riesco a trovare un buon modo per calcolarlo facilmente. Posso semplicemente aggiungere ogni DateInterval con una conversione del genere:

sec + 60xmin + 3600xHour ...

e riprodurli con il modulo (%).

Ma spero che ci sia un altro modo?

risposta

1

È necessario moltiplicare i minuti con 60, le ore con 3600, ecc., Fino a quando mancano solo pochi secondi. Da lì è facile calcolare la media.

+0

so che posso calcolare come questo ma, sto cercando un altro modo ... –

-1

prega di fare riferimento questo link http://php.net/manual/en/function.date-diff.php

ci sono sacco di funzioni differenza di data disponibili nella Nota per l'utente/sviluppatori.

Provali. Spero che uno di loro ti aiuti.

+0

do un'occhiata ma non riesco a trovare sth che può aiutarmi ... –

+0

Cerca "eugene at ultimatecms dot co dot za "sulla stessa pagina. Penso che la funzione date_diff ($ start, $ end = "NOW") ti aiuterà. – pinaldesai

+0

Quale delle funzioni pensate aiuterà a rispondere alla domanda? Potete fornire un esempio che dimostri come prendere la funzione data-diff ed eseguire una media o anche una divisione su di esso? – Rikki

1

Ok untif ho trovato sth meglio ho appena scritto questo:

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

Non è perfetto, ma meglio di niente.