Data e hora em PHP em 2025: não repita esses 5 erros

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

O tempo não espera: por que lidar com datas em PHP é complicado (e como corrigir isso)



Imagine: você está escrevendo um blog, uma loja virtual ou uma área de cliente. E de repente percebe — precisa mostrar ao usuário quando um artigo foi publicado, um pedido foi feito ou uma mensagem foi enviada. Parece simples, não? É só usar a função date() e pronto.



Mas o diabo, como sempre, está nos detalhes. Em 2025, desenvolvedores PHP ainda cometem os mesmos erros: confundem fusos horários, esquecem a imutabilidade dos objetos, usam funções obsoletas. Depois se surpreendem quando a hora no site "pula" e os testes falham.



Neste artigo, vamos abordar as melhores práticas para trabalhar com data e hora em PHP — desde soluções simples até técnicas profissionais. Você aprenderá como obter a data atual, como trabalhar com fusos horários e como não dar um tiro no pé ao lidar com timestamps.



1. A maneira mais simples: a função date()



Vamos começar com o clássico. A função date() é por onde 90% dos iniciantes começam. Ela aceita dois parâmetros: o formato de saída e (opcionalmente) um timestamp. Se o timestamp não for informado, usa a hora atual do servidor.



echo date('Y-m-d H:i:s');// Saída: 2025-04-08 14:35:12


Aqui estão os formatos mais populares:

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


Problema: date() depende da configuração date.timezone no php.ini. Se você não definir o fuso horário, o PHP usará a hora do sistema do servidor. E o servidor pode estar em outro fuso horário — então seus usuários verão a hora errada.



2. Abordagem profissional: a classe DateTime



A partir do PHP 5.2, temos a classe DateTime. É uma forma orientada a objetos de trabalhar com datas, muito mais flexível e segura do que as funções date() e time().



$now = new DateTime();echo $now->format('Y-m-d H:i:s');// Saída: 2025-04-08 14:35:12


Vantagens do DateTime:

  • Você pode definir facilmente o fuso horário através do construtor
  • Suporta modificação de data (adicionar dias, meses)
  • Sabe comparar datas entre si
  • Trabalha com intervalos


Exemplo com fuso horário:



$now = new DateTime('now', new DateTimeZone('Europe/Moscow'));echo $now->format('Y-m-d H:i:s');// Saída: 2025-04-08 17:35:12 (MSK, UTC+3)


2.1. DateTimeImmutable — seu novo melhor amigo



No PHP 5.5 surgiu o DateTimeImmutable. Sua principal diferença do DateTime comum: ele não modifica a si mesmo. Em vez disso, cada método (como modify() ou add()) retorna um novo objeto.



$date = new DateTimeImmutable();$modified = $date->modify('+1 day');

echo $date->format('Y-m-d'); // 2025-04-08 (não mudou!)echo $modified->format('Y-m-d'); // 2025-04-09 (novo objeto)


Por que isso é importante? Porque o DateTime comum é um objeto por referência. Se você passá-lo para uma função e ele for modificado lá, o original também será alterado. Com o Immutable, esse problema não existe. Em 2025, isso é considerado o padrão de facto para projetos sérios.



3. Como obter timestamp: time() vs DateTime



Às vezes você precisa não da data, mas do Unix timestamp — o número de segundos desde 1º de janeiro de 1970. O PHP oferece dois caminhos:



// Método antigoecho time();  // 1744112112

// Método novoecho (new DateTime())->getTimestamp(); // 1744112112


Para tarefas simples, time() é perfeitamente adequado

Blogs

Book Recommendations