Datas no PHP: O gerenciamento de datas e horários é uma necessidade universal em aplicações web, desde registrar o momento de uma transação até agendar tarefas futuras. O PHP fornece ferramentas duais para essa tarefa: um conjunto de funções básicas herdadas e a classe moderna DateTime, que oferece uma abordagem mais orientada a objetos, robusta e consciente de fusos horários.
1. 📅 Funções Básicas de Data e Tempo
As funções legadas (date, time, strtotime) são úteis para tarefas rápidas, mas são baseadas no Timestamp Unix, que é o número de segundos desde 1º de janeiro de 1970 (Era Unix).
| Função | Propósito | Exemplo PHP |
time() | Retorna o timestamp Unix atual (inteiro). | echo time(); |
date(formato, timestamp) | Formata um timestamp em uma string legível. Se $timestamp for omitido, usa o tempo atual. | echo date("d/m/Y H:i:s"); |
strtotime(string) | Converte uma string de data legível (em inglês) para um timestamp Unix. | $ts = strtotime("tomorrow"); |
Exemplo de Conversão
PHP
<?php
// Converter uma string para timestamp
$timestamp = strtotime("2023-11-29 10:30:00");
// Usar o timestamp para formatar a data
echo date("d/m/Y", $timestamp); // Saída: 29/11/2023
?>
2. 🕰️ A Classe DateTime: Orientação a Objetos
A classe DateTime e suas classes relacionadas são a maneira preferida e mais poderosa de lidar com datas em PHP moderno, pois oferecem controle total sobre fusos horários e cálculos complexos.
A. Criação e Formatação
Para usar DateTime, você cria um objeto, que encapsula a data e hora.
PHP
<?php
// 1. Criar um objeto DateTime (data e hora atuais)
$data = new DateTime();
// 2. Formatar a saída (utilizando o método format())
echo $data->format('Y-m-d H:i:s'); // Ex: 2025-12-02 19:38:00
// 3. Criar com uma data específica
$dataEspecifica = new DateTime('2024-05-15');
echo $dataEspecifica->format('l, d/m/Y'); // Ex: Wednesday, 15/05/2024
?>
B. Fusos Horários (DateTimeZone)
A classe DateTime é time zone aware (consciente de fuso horário), garantindo precisão em sistemas globais.
PHP
<?php
// Criar um objeto DateTime com fuso horário específico
$fusoBrasilia = new DateTimeZone('America/Sao_Paulo');
$data = new DateTime('now', $fusoBrasilia);
echo $data->format('Y-m-d H:i:s T'); // 'T' mostra a abreviação do fuso.
?>
3. ➕ Cálculos de Data e Intervalos
Em vez de manipular timestamps manualmente para somar ou subtrair períodos, a classe DateInterval permite cálculos sem erros.
A. Modificando Datas (add e sub)
Você usa DateInterval para definir o período que deseja adicionar ou subtrair. O formato do intervalo (P1M) segue o padrão ISO 8601, onde P significa Período, Y ano, M mês, D dia.
PHP
<?php
$dataAtual = new DateTime();
echo "Data Inicial: " . $dataAtual->format('Y-m-d') . "<br>";
// Adiciona 1 mês (P1M)
$dataAtual->add(new DateInterval('P1M'));
echo "Após Adicionar 1 Mês: " . $dataAtual->format('Y-m-d') . "<br>";
// Subtrai 5 dias (P5D)
$dataAtual->sub(new DateInterval('P5D'));
echo "Após Subtrair 5 Dias: " . $dataAtual->format('Y-m-d');
?>
B. Diferença entre Datas (diff)
O método diff() retorna um objeto DateInterval que representa a diferença exata entre duas datas.
PHP
<?php
$data1 = new DateTime('2023-11-29');
$data2 = new DateTime('2023-12-10');
// Calcula a diferença entre data2 e data1
$intervalo = $data2->diff($data1);
// O método format() do DateInterval usa especificadores com '%'
echo $intervalo->format('O intervalo é de %a dias (ou %y anos, %m meses e %d dias).');
// Saída: O intervalo é de 11 dias (ou 0 anos, 0 meses e 11 dias).
?>
4. 📝 Tabela de Formatação Comum
O método format() aceita diversas letras para personalizar a saída da data e hora.
| Formato | Descrição | Exemplo de Saída |
d/m/Y | Data (dia/mês/ano com 4 dígitos) | 02/12/2025 |
Y-m-d H:i:s | Formato SQL / ISO 8601 | 2025-12-02 19:38:00 |
l | Nome completo do dia da semana | Tuesday |
F | Nome completo do mês | December |
a ou A | am/pm em minúsculo ou maiúsculo | pm ou PM |
U | Timestamp Unix (segundos) | 1701358080 |
5. ✅ Boas Práticas
- Prefira
DateTime: Utilize a classeDateTimee seus métodos para qualquer manipulação de datas, pois é menos propensa a erros do que a manipulação manual de timestamps. - Defina o Fuso Horário Padrão: Use a função
date_default_timezone_set('Seu/Fuso')no início do script (ou no arquivo de configuração) para garantir que todas as operações de data usem o fuso horário correto. - Valide Entradas: Sempre valide strings de data fornecidas pelo usuário antes de tentar convertê-las em objetos
DateTime. - Utilize
DateInterval: Para somar ou subtrair períodos, useadd()ousub()comDateIntervalem vez de tentar cálculos manuais.
✅ Conclusão Datas no PHP
Datas no PHP: O manejo de datas no PHP exige a compreensão das funções básicas (para timestamps rápidos) e, crucialmente, o domínio da abordagem orientada a objetos da classe DateTime. Ao utilizar DateTime em conjunto com DateInterval e DateTimeZone, você garante que suas aplicações realizem cálculos de tempo de forma precisa, escalável e consciente de fuso horário.
Toda jornada tem um início, e o início para se tornar um desenvolvedor back-end é dominar as seguintes tecnologias, que você encontra aqui mesmo:
E se você gosta do nosso conteúdo, não deixe de contribuir adquirindo os serviços e produtos dos nossos apoiadores e empresas que somos associados:












