Rafael Clares


Calcular diferença entre 2 datas com PHP
Fevereiro 10, 2008, 4:21 am
Arquivado em: PHP | Tags: , , , , ,

 Diferença entre datas com a função mktime()

Um exemplo simples de como calcular a diferença entre 2 datas utilizando o php, como bem sabemos um dia possui 24 horas que equivale a (24 * 60  * 60)  igual á 86400.

A função mktime recebe os argumentos (hora, minuto, segundos, mes, dia, ano).

<?php
#setando a primeira data  10/01/2008
$dia1 = mktime(0,0,0,01,10,2008);
#setando segunda data 10/02/2008
$dia2 = mktime(0,0,0,02,10,2008);  
#armazenando o valor da subtracao das datas
$d3 = ($dia2-$dia1);
#usando o roud para arrendondar os valores
#converter o tempo em dias

$dias = round(($d3/60/60/24));
#converter o tempo em horas
$hrs = round(($d3/60/60));
#converter o tempo em minutos
$mins = round(($d3/60));
#exibindo  dias | repudizira na tela 31
echo $dias.”<br>”;

#exibindo  horas | repudizira na tela 744
echo $hrs.”<br>”;

#exibindo  minutos | repudizira na tela 44640
echo $mins.”<br>”;
?>

Importante lembrar que acima hrs é o total de horas entre as duas datas e o mesmo para minutos.

Para tornar o exemplo útil você precisa setar de forma dinâmica os valores para $dia1 e $dia2, como exemplo imagine que seu sistema grava a data (mktime) de um post e faça o calculo do (diaAtual – diadoPost).

Dica:

Para passar para o formato comum uma data em mktime() use o date como abaixo:
echo date(‘d/m/Y’,$dia2);

Até logo,


6 Comentários até o momento
Deixe um comentário

Cara, muito boa dica, valeu!

Comment por Paulo

É nesse momento que eu paro e penso: “Como é que eu não pensei nisso antes?!?!?!?!”

xD
Muito boa dica, TY!!

Comment por Tata

como faço para utilizar o tempo do sistema operacional para calcular o tempo que o usuario permanece na pagina

Comment por TCL

cara
que dica EXCELENTE!
muito obrigado!!!

Comment por guilherme

cara, muito util esse código mesmo, mas deu alguns problemas quanto ao ’round’ que você deu nas variaveis, seria mais apropriado usar um ‘floor’, que foi o que eu usei aqi e funcionou muito bem.

Comment por Marcos

Muito bom esse código, eu consegui rodá-lo tanto com o ROUND e o FLOOR deram certo! Deu um pequeno erro no “echo $dias.””;
” em diante… Resolvi com o corfome segue abaixo:

PARABÉNS RAFAEL!!!

Comment por Paulo




Deixe um comentário
Linhas e parágrafos quebram automaticamente, endereços de email não serão mostrados, HTML permitido: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>