Método diff da classe DateTime

O método diff da classe DateTime aceita como parâmetro outro objeto DateTime e retorna um objeto DateInterval, contendo a diferença entre as datas. A diferença pode ser obtida em várias unidades de medida (dias, meses, anos, etc.).

Sintaxe

php$interval = $datetime1->diff($datetime2);

Exemplo

Vamos calcular a diferença entre duas datas:

php<?php
  $date1 = new DateTime('2023-01-01');
  $date2 = new DateTime('2023-02-15');
  $interval = $date1->diff($date2);
  echo $interval->format('%R%a days');
?>

Resultado da execução do código:

php'+45 days'

Exemplo

Vamos obter a diferença em meses e dias:

php<?php
  $date1 = new DateTime('2023-03-10');
  $date2 = new DateTime('2023-05-25');
  $interval = $date1->diff($date2);
  echo $interval->format('%m months %d days');
?>

Resultado da execução do código:

php'2 months 15 days'

Exemplo

Comparação de datas considerando o horário:

php<?php
  $date1 = new DateTime('2023-01-01 10:00:00');
  $date2 = new DateTime('2023-01-01 14:30:00');
  $interval = $date1->diff($date2);
  echo $interval->format('%h hours %i minutes');
?>

Resultado da execução do código:

php'4 hours 30 minutes'

Veja também

  • a função date,
    que formata data e hora
  • a função strtotime,
    que converte uma string em timestamp
  • a classe DateInterval,
    que representa um intervalo de datas