Trabalho com datas e horas em PHP: do A ao Z — guia completo

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalho com datas e horas em PHP: do A ao Z



Trabalhar com datas e horas é uma das tarefas mais comuns no desenvolvimento web. Seja para exibir a data de publicação, calcular a idade do usuário, registrar eventos ou criar um calendário — o PHP oferece um conjunto de ferramentas poderoso e flexível. Neste artigo, abordaremos todos os aspectos: desde funções simples até a abordagem orientada a objetos com a classe DateTime, incluindo fusos horários e exemplos práticos.



Funções básicas: date() e time()



O conjunto básico de funções para trabalhar com datas inclui time() e date(). A função time() retorna o timestamp Unix atual (número de segundos desde 1º de janeiro de 1970). A função date() formata esse timestamp em um formato legível por humanos.



Obtendo a data e hora atuais

A maneira mais simples de exibir a data atual:

<?phpecho date('Y-m-d H:i:s'); // 2025-04-10 15:30:45?>


Formatação com date()

A função date() aceita dois parâmetros: o formato e um timestamp opcional. Os símbolos de formatação mais populares:

  • d — dia do mês (01–31)
  • m — mês (01–12)
  • Y — ano com 4 dígitos
  • H — horas no formato 24 horas (00–23)
  • i — minutos (00–59)
  • s — segundos (00–59)

Exemplo de saída com texto em português:

<?phpecho 'Hoje é ' . date('d/m/Y') . ', hora ' . date('H:i');// Hoje é 10/04/2025, hora 15:30?>


Classe DateTime: abordagem orientada a objetos

Para operações complexas, recomenda-se usar a classe DateTime. Ela é intuitiva, suporta fusos horários e simplifica as manipulações com datas.



Criando um objeto DateTime

Você pode criar um objeto de várias maneiras:

<?php// Data e hora atuais$now = new DateTime();echo $now->format('Y-m-d H:i:s'); // 2025-04-10 15:30:45

// Data específica$date = new DateTime('2025-12-31 23:59:59');echo $date->format('d/m/Y'); // 31/12/2025

// Usando formato relativo$nextWeek = new DateTime('+1 week');echo $nextWeek->format('Y-m-d');?>


Alterando a data: modify()

O método modify() permite adicionar ou subtrair intervalos facilmente:

<?php$date = new DateTime('2025-04-10');$date->modify('+10 days');echo $date->format('d/m/Y'); // 20/04/2025

$date->modify('-1 month');echo $date->format('d/m/Y'); // 20/03/2025?>


Trabalhando com fusos horários

Ignorar fusos horários é um erro comum. O PHP oferece duas maneiras de gerenciá-los: globalmente através de date_default_timezone_set() e localmente através do objeto DateTimeZone.



Configuração global

Defina o fuso horário no início do script:

<?phpdate_default_timezone_set('America/Sao_Paulo');echo date('H:i'); // Horário de Brasília?>


Configuração local para DateTime

Cada objeto DateTime pode ter seu próprio fuso horário:

<?php$timezone = new DateTimeZone('America/Manaus');$date = new DateTime('now', $timezone);echo $date->format('H:i'); // Horário em Manaus

// Alterando o fuso de um objeto existente$date->setTimezone(new DateTimeZone('America/Sao_Paulo'));echo $date->format('H:i'); // Horário convertido?>


Diferença entre datas: DateInterval

A classe DateInterval e o método diff() permitem calcular a diferença entre duas datas.



Calculando a diferença

<?php$start = new DateTime('2025-01-01');$end = new DateTime('2025-12-31');$interval = $start->diff($end);

echo $interval->days; // 364 (quantidade

Blogs

Book Recommendations