Fala pessoal! Hoje vou explicar como calcular a diferença (em dias) entre duas datas no PHP.
O processo é bem simples e se resume a criar o timestamp dessas datas e depois calcular o número de dias baseando-se na quantidade de segundos entre as duas datas.
Vou mostrar como fazer o processo de duas formas pois, normalmente, trabalhos com datas em dois formatos: DD/MM/AAAA (padrão brasileiro) e AAAA-MM-DD (formato do MySQL).
Se alguém aí quiser ler um pouco mais sobre como trabalhar com datas no PHP é só dar uma olhada nesse post: Trabalhando com datas no PHP.
Vamos ao primeiro exemplo que usa datas no formato DD/MM/AAAA:
Vou explicar de forma rápida: Primeiro criamos uma função para gerar o timestamp de uma data usando a função mktime() do PHP. Depois nós dividimos o número de segundos (diferença das duas datas) pelo número de segundos existentes em um dia (60 * 60 * 24 = 86400) e arredondamos o resultado usando a função floor().
Essa aplicação pode parecer complicada pra alguns mas ela utiliza um passo-a-passo muito claro pra quem consegue entender o processo de se calcular a diferença de dias entre duas datas. É só pensar em como você pode fazer isso e vai descobrir que não há forma melhor. ;)
Com isso você já consegue calcular a diferença e se usar um pouquinho de criatividade pode calcular também a diferença de horas e minutos.
–
O exemplo do formato AAAA-MM-DD é mais simples:
Nesse exemplo não precisamos criar uma função pois a função strtotime() do PHP já converte uma data no formato AAAA-MM-DD em timestamp.
Atenção: Não fiz nenhuma validação para caso as datas inseridas sejam inválidas ou a data final seja maior que a data inicial. Meu intuito era mostrar apenas como é o processo do calculo dessa diferença. ;)
Espero que essa aula tenha sido útil pra vocês… Qualquer dúvida ou sugestão é só comentar ou mandar um e-mail.
Até a próxima
Documentação Oficial:
- Função [explode()](http://br.php.net/explode) » Divide uma string usando um separador
- Função [mktime()](http://br.php.net/mktime) » Gera um timestamp de uma data especificada
- Função [floor()](http://br.php.net/floor) » Arredonda valores fracionados para baixo
- Função [strtotime()](http://br.php.net/strtotime) » Converte datas textuais em timestamps