Pergunta

Olá, preciso calcular um tempo médio entre alguns DateInterval.

Na verdade eu tenho alguns Dateinterval como este:

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

Aqui está a saída:

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

Preciso calcular o tempo médio entre esses intervalos.Aqui são apenas minutos e segundos, mas pode ser mês ou ano.

Não consigo encontrar uma boa maneira de calculá-lo facilmente.posso simplesmente adicionar cada dateInterval com uma conversão como esta:

sec + 60xmin + 3600xHour ...

E eles brincam com Módulo (%).

Mas espero que haja outra maneira?

Foi útil?

Solução

Você deve multiplicar os minutos por 60, as horas por 3600, etc., até que restem apenas segundos.A partir daí é fácil calcular a média.

Outras dicas

Ok, até que eu tenha achado algo melhor, apenas escrevo isto:

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

Não é perfeito, mas é melhor que nada.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top