Olá, tudo tranquilo?!

Uma ação bem simples e que pode nos auxiliar em muito no dia a dia é calcular a diferença entre duas datas. Para isso vou demonstrar a forma mais simples para realizar esta ação.

1
2
3
4
5
6
<?php

$dateStart = new \DateTime('2017-01-01');
$dateNow   = new \DateTime(date('Y-m-d'));

$dateDiff = $dateStart->diff($dateNow);<

Vamos detalhar o código acima:

Primeiro armazenamos a data base na qual desejamos verificar.

Logo em seguida criamos uma variável e nela inserimos a data atual, lembrando que poderia ser qualquer data passado, presente ou futuro.

Podemos notar que para calcular a diferença entre as duas datas foi utilizado a data base e como ela é um objeto “DateTime” podemos chamar seu método “diff”, abaixo podemos analisar o resultado da nossa ação.

1
2
3
4
5
6
7
8
9
object(DateInterval)[3]
  public 'y' => int 0
  public 'm' => int 1
  public 'd' => int 7
  public 'h' => int 0
  public 'i' => int 0
  public 's' => int 0
  public 'invert' => int 0
  public 'days' => int 38

Como retorno obtivemos um objeto do tipo “DateInterval” com isso teremos acesso a diversos atributos públicos, abaixo vamos detalhar cada um deles:

  • “y”
    • Número de anos.
  • “m”
    • Número de meses.
  • “d”
    • Número de dias.
  • “h”
    • Número de horas.
  • “i”
    • Número de minutos.
  • “s”
    • Número de segundos.
  • “invert”
    • Será 1 se o intervalo representa um período negativo de tempo e 0 (zero) caso contrário.
  • “days”
    • Representa o número total de dias entre as duas datas (data inicial e data final).

Podemos também calcular a diferença de horas dentro do mesmo dia, vejamos o exemplo abaixo:

1
2
3
4
5
6
<?php

$dateStart = new \DateTime('2017-02-08 08:00');
$dateNow   = new \DateTime(date('Y-m-d H:i'));

$dateDiff = $dateStart->diff($dateNow);

Como podemos observar, utilizamos a mesma data para ambas as variáveis divergindo apenas nas horas e minutos, podemos observar abaixo o resultado:

1
2
3
4
5
6
7
8
9
object(DateInterval)[3]
  public 'y' => int 0
  public 'm' => int 0
  public 'd' => int 0
  public 'h' => int 9
  public 'i' => int 44
  public 's' => int 0
  public 'invert' => int 0
  public 'days' => int 0

Com uma simples operação conseguimos descobrir que a diferença entre os dois valores são de 9horas  e 44 minutos.

Para acessarmos os valores de cata atributo basta chamá-los de forma direta, vejamos o exemplo abaixo para capturarmos a hora e minuto do nosso exemplo.

1
2
3
4
5
<?php

// códigos do nosso exemplo acima

$result = $dateDiff->h . ' horas e ' . $dateDiff->i . ' minutos';

Nossa variável “$result” conterá a “string” “9 horas e 54 minutos”.

Viram como é muito simples calcular a diferença entre duas datas com PHP, espero que tenham apreciado e que seja útil no dia a dia de vocês.

Até a próxima pessoal 🙂