Introdução: por que saber trabalhar com datas e horas em PHP
Trabalhar com datas e horas é uma das tarefas essenciais no desenvolvimento web. Seja para registrar ações do usuário, calcular idade, criar calendários, processar timestamps do banco de dados ou gerenciar prazos de assinatura — não é possível prescindir de ferramentas confiáveis para lidar com datas. O PHP oferece aos desenvolvedores um conjunto poderoso e flexível de funções e classes para esses fins.
Neste artigo, vamos detalhar as principais formas de trabalhar com datas e horas em PHP: desde funções simples como date() e time() até a abordagem orientada a objetos com a classe DateTime. Você aprenderá a formatar datas, calcular a diferença entre elas, trabalhar com fusos horários e evitar erros comuns.
Funções principais: date(), time() e mktime()
A maneira mais simples de obter a data ou hora atual em PHP é usar a função date(). Ela aceita uma string de formato e, opcionalmente, um timestamp. Se o timestamp não for passado, o horário atual é usado.
<?php// Data atual no formato "Ano-Mês-Dia"echo date('Y-m-d'); // Saída: 2025-04-10
// Hora atual no formato "Horas:Minutos:Segundos"echo date('H:i:s'); // Saída: 14:35:20
// Data e hora completasecho date('Y-m-d H:i:s'); // Saída: 2025-04-10 14:35:20?>Função time()
time() retorna o timestamp Unix atual (o número de segundos desde 1º de janeiro de 1970). Isso é útil para cálculos e comparações.
<?php$now = time();echo $now; // Saída: 1744277720 (número muda a cada segundo)
// Data daqui a 7 dias$nextWeek = time() + (7 * 24 * 60 * 60);echo date('Y-m-d', $nextWeek); // Saída: 2025-04-17?>Função mktime()
mktime() permite criar um timestamp para uma data e hora específicas. É útil quando você precisa obter um timestamp para parâmetros definidos.
<?php// Cria um timestamp para 25 de dezembro de 2025, às 10:00:00$christmas = mktime(10, 0, 0, 12, 25, 2025);echo date('Y-m-d H:i:s', $christmas); // Saída: 2025-12-25 10:00:00?>Formatação de datas: símbolos principais
Na tabela abaixo estão os símbolos de formatação mais usados para a função date():
- d — dia do mês (01–31)
- m — número do mês (01–12)
- Y — ano no formato de 4 dígitos (2025)
- H — horas no formato 24h (00–23)
- i — minutos (00–59)
- s — segundos (00–59)
- l — nome completo do dia da semana (Monday)
- F — nome completo do mês (April)
Abordagem orientada a objetos: classe DateTime
A partir do PHP 5.2, é recomendado usar a classe DateTime para trabalhar com datas. Ela oferece muito mais recursos e uma interface intuitiva.
Criação de um objeto DateTime
<?php// Data e hora atuais$date = new DateTime();echo $date->format('Y-m-d H:i:s'); // Saída: 2025-04-10 14:35:20
// Data específica$birthday = new DateTime('1990-07-15');echo $birthday->format('d.m.Y'); // Saída: 15.07.1990
// Com formato relativo$nextMonth = new DateTime('+1 month');echo $nextMonth->format('Y-m-d'); // Saída: 2025-05-10?>Modificação de datas
O método modify() permite alterar facilmente a data usando strings relativas.
<?php$date = new DateTime('2025-04-10');$date->modify('+10 days');echo $date->format('Y-m-d'); // Saída: 2025-04-20
$date->modify('first day of next month');echo $date->format('Y-m-d'); // Saída: 2025-05-01?>