2012-07-26 10 views
6

Hola, necesito calcular un tiempo promedio entre algunos DateInterval.Fecha promedioInterval php

De hecho, he alguna DateInterval así:

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

Aquí está la salida:

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

necesito para calcular el tiempo medio entre esta intervalos. Aquí solo son minutos y segundos, pero podría ser Mes o año.

No puedo encontrar una buena manera de calcularlo fácilmente. i puede simplemente añadir todos los DateInterval con una conversión de esta manera:

sec + 60xmin + 3600xHour ...

Y jugar con ellos módulo (%).

Pero espero que haya otra manera?

Respuesta

1

Debe multiplicar los minutos por 60, las horas por 3600, etc., hasta que solo queden unos segundos. A partir de ahí, es fácil calcular el promedio.

+0

sé que puedo calcular de esta manera, pero estoy buscando otra manera ... –

-1

Consulte este enlace http://php.net/manual/en/function.date-diff.php

Hay montón de funciones diferencia de fechas disponibles en la Nota usuario/del desarrollador.

Pruébelo. Espero que uno de ellos te ayude.

+0

echo un vistazo pero no encuentro nada que pueda ayudarme ... –

+0

Buscar "eugene at ultimatecms dot co dot za "en la misma página. Creo que la función date_diff ($ start, $ end = "NOW") te ayudará. – pinaldesai

+0

¿Cuál de las funciones crees que te ayudarán a responder la pregunta? ¿Puede proporcionar un ejemplo que demuestre cómo tomar la función date-diff y realizar un promedio o incluso una división en ella? – Rikki

1

Ok untif he encontrado algo mejor que acabo de escribir esto:

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

No es perfecto, pero es mejor que nada.