Data e hora atuais em PHP: guia completo 2025

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

Como obter a data e hora atuais em PHP: melhores práticas em 2025

\n\n

Todo desenvolvedor PHP, do iniciante ao sênior, já se perguntou: "How do I get the current date and time in PHP?". Essa pergunta no Stack Overflow acumula milhares de visualizações e continua relevante. Em 2025, com o PHP mantendo sua posição sólida no desenvolvimento web, saber trabalhar corretamente com datas e horas não é apenas uma competência básica, mas uma necessidade. Logging, cache, relatórios, integração com APIs — tudo exige precisão temporal. Neste artigo, vamos explorar não apenas as funções clássicas, mas também as melhores práticas modernas para que seu código seja limpo, confiável e preparado para qualquer fuso horário.

\n\n

O clássico: date() e time()

\n\n

A maneira mais simples e rápida de obter a data e hora atuais em PHP é a função date(). Ela aceita uma string de formato e retorna a data formatada com base na hora atual do servidor ou em um timestamp específico.

\n\n
<?php\necho date('Y-m-d H:i:s'); // 2025-04-10 14:30:00\necho date('d/m/Y');        // 10/04/2025\necho date('r');            // Thu, 10 Apr 2025 14:30:00 +0300\n?>
\n\n

E se você precisar apenas do Unix timestamp (número de segundos desde 1º de janeiro de 1970)? Use time():

\n\n
<?php\n$timestamp = time();\necho $timestamp; // 1744273800 (exemplo)\necho date('Y-m-d H:i:s', $timestamp);\n?>
\n\n

Importante: date() usa o fuso horário definido no php.ini através da diretiva date.timezone, ou definido pela função date_default_timezone_set(). Em 2025, isso ainda funciona para scripts simples, mas para projetos sérios existem ferramentas mais flexíveis.

\n\n

Abordagem moderna: a classe DateTime

\n\n

Desde o PHP 5.2 (há muito tempo), a linguagem ganhou uma forma orientada a objetos de trabalhar com datas — a classe DateTime. Ela se tornou o padrão de facto para a maioria dos frameworks e CMSs. Por quê? Porque é mais flexível, legível e segura.

\n\n
<?php\n$now = new DateTime();\necho $now->format('Y-m-d H:i:s'); // 2025-04-10 14:30:00\n\n// Com fuso horário específico\n$now = new DateTime('now', new DateTimeZone('America/Sao_Paulo'));\necho $now->format('Y-m-d H:i:s'); // 2025-04-10 10:30:00 (BRT)\n?>
\n\n

Com DateTime, você pode manipular datas facilmente: adicionar dias, subtrair meses, comparar objetos. Por exemplo:

\n\n
<?php\n$today = new DateTime();\n$nextWeek = (new DateTime())->modify('+7 days');\n$diff = $nextWeek->diff($today);\necho $diff->days; // 7\n?>
\n\n

Essa é a abordagem recomendada pelas melhores práticas de PHP em 2025. Ela é imutável (se você não modificar o objeto diretamente) e intuitiva.

\n\n

Variante imutável: DateTimeImmutable

\n\n

Se você trabalha em um projeto sério onde a previsibilidade é importante, use DateTimeImmutable. Diferente de DateTime, seus métodos não alteram o objeto original, mas retornam um novo. Isso evita mutações acidentais de estado.

\n\n
<?php\n$date = new DateTimeImmutable('2025-04-10');\n$newDate = $date->modify('+1 month');\necho $date->format('Y-m-d');    // 2025-04-10 (inalterado)\necho $newDate->format('Y-m-d'); // 2025-05-10\n?>
\n\n

Em 2025, isso é considerado boa prática — use DateTimeImmutable sempre que possível.

\n\n

Fusos horários: configuração e conversão

\n\n

Erro de fuso horário é um dos problemas mais comuns. Imagine: servidor nos EUA, usuário no Brasil, e você exibindo o horário de Greenwich. Um clássico desastre.

\n\n

Para evitar isso, sempre especifique o fuso horário explicitamente. A maneira mais confiável é defini-lo no início do script com date_default_timezone_set():

\n

Blogs

Book Recommendations