Como Formatar Data e Hora no PHP: Guia da Função date()

Guia Absoluto da Função date() no PHP: Como Formatar Data, Hora e Timezones

A Importância da Sincronização de Tempo no Back-end

No desenvolvimento de aplicações web corporativas, gerenciar registros temporais de forma cirúrgica é um requisito mandatório. Seja para carimbar o momento exato de uma transação financeira via API Pix, monitorar o tempo de expiração de tokens JWT de segurança ou gerar relatórios consolidados para auditoria fiscal (LGPD), você precisará capturar e formatar dados de tempo.

Manipular strings temporais brutas pode se transformar em um pesadelo técnico devido às variações locais de fusos horários e calendários. Felizmente, a arquitetura interna do PHP disponibiliza uma ferramenta de alto desempenho, nativa e absurdamente versátil para resolver esse problema: a função date().

Com essa única função, você possui o poder de isolar frações específicas do tempo, calcular anos bissextos em tempo de execução, descobrir o dia exato da semana de uma data retroativa e configurar saídas customizadas para qualquer padrão internacional exigido pelo mercado.


Como Funciona a Função date() no PHP?

O que faz a função date() no PHP?
A função date() do PHP retorna uma string formatada a partir de um carimbo de data/hora (Timestamp Unix) local. Caso um timestamp específico não seja fornecido no segundo parâmetro, a função assume automaticamente a data e hora atual do servidor, baseando-se no fuso horário configurado na aplicação.

A assinatura de tipos estrutural da função na engine do PHP é definida da seguinte forma:

string date(string $format, ?int $timestamp = null)


Matriz Completa de Parâmetros de Formatação (Tokens)

Para extrair o máximo de performance, a engine do PHP adota tokens (letras específicas) que funcionam como curingas de substituição. Abaixo, eliminamos as antigas marcações de tabela e estruturamos um Grid Semântico Responsivo para você consultar rapidamente como moldar suas strings temporais:

📅 Dia e Semana

d: Dia do mês com zero à esquerda (01 a 31)

j: Dia do mês sem zero à esquerda (1 a 31)

D: Dia da semana abreviado em inglês (Mon, Sun)

l: Nome completo do dia da semana (Monday, Sunday)

w: Índice numérico do dia da semana (0 para Domingo, 6 para Sábado)

z: Dia do ano sequencial (0 a 365)

🍂 Mês e Ano

m: Mês numérico com zero à esquerda (01 a 12)

n: Mês numérico sem zero à esquerda (1 a 12)

M: Nome do mês abreviado com 3 letras (Jan, Dec)

F: Nome completo do mês em inglês (January, December)

t: Quantidade de dias totais do mês informado (28 a 31)

Y: Ano completo com 4 dígitos (Ex: 2026)

L: Validador de ano bissexto (1 se sim, 0 se não)

⏰ Horário e Fuso

H: Formato 24 horas com zero à esquerda (00 a 23)

G: Formato 24 horas sem zero à esquerda (0 a 23)

h: Formato 12 horas com zero à esquerda (01 a 12)

g: Formato 12 horas sem zero à esquerda (1 a 12)

i: Minutos com zero à esquerda (00 a 59)

s: Segundos com zero à esquerda (00 a 59)

a / A: Indicadores meridianos (am/pm ou AM/PM)

e / T: Identificador do Timezone ativo (UTC, America/Sao_Paulo)

Domine o PHP de Forma Linear, Sem Anúncios e Sem Interrupções 🚀

"Eu me perdia completamente tentando configurar servidores e fusos horários lendo artigos soltos na web. A apostila me deu um norte perfeito, direto ao ponto e focado em problemas reais do mercado." - Alana D., Desenvolvedora Back-end Sênior.

Se tornar um programador de elite exige um estudo estruturado. Na nossa Apostila Oficial de PHP, eliminamos as distrações das redes e compilamos um roteiro passo a passo com exemplos práticos corporativos, desafios de lógica algorítmica e gabaritos comentados para você estudar offline a qualquer hora. Garanta sua vantagem competitiva e apoie a educação de TI nacional!

📥 Baixar Apostila PHP Progressivo Premium
Capa digital da Apostila PHP Progressivo com fundo transparente

Exemplos de Implementação Prática

Vamos analisar como estruturar strings de datas personalizadas combinando caracteres estáticos de escape com os tokens de processamento da engine do PHP. Veja os cenários abaixo:


<?php
// Cenário 1: Formatação clássica brasileira (Dia/Mês/Ano)
echo "Hoje é " . date("d/m/Y") . "<br>";
// Saída esperada: Hoje é 18/05/2026

// Cenário 2: Formatação por extenso internacional (Padrão de logs corporativos)
echo "Data de Fechamento do lote: " . date("F d, Y") . "<br>";
// Saída esperada: Data de Fechamento do lote: May 18, 2026

// Cenário 3: Combinando sufixos ordinários e dias por extenso com printf()
$diaDaSemana = date("l"); 
$sufixoDia   = date("dS"); 
$mesAno      = date("F Y"); 

printf("Relatório emitido no dia: %s, o %s dia do mês de %s.<br>", $diaDaSemana, $sufixoDia, $mesAno);
// Saída esperada: Relatório emitido no dia: Monday, o 18th dia do mês de May 2026.
?>

Trabalhando com Horários Críticos (Tempo Real)

Para capturar a estampa de tempo contendo horas, minutos e segundos de forma síncrona, basta estender os tokens internos dentro do argumento do método. Este recurso é amplamente utilizado no controle de sessões e disparos de cronjobs no servidor:


<?php
// Cenário: Captura de horário completo padrão militar (24 horas)
echo "Timestamp de auditoria do sistema: " . date("H:i:s") . "<br>";
// Saída esperada: Timestamp de auditoria do sistema: 23:12:21

// Incluindo o fuso horário configurado na máquina para validação de segurança
echo "Fuso Horário Ativo: " . date("H:i:s T e") . "<br>";
// Saída esperada: Fuso Horário Ativo: 23:12:21 BRT America/Sao_Paulo
?>

⚙️ Teste Interativo: Gerador de Formatos em Tempo Real

Brinque com os tokens de formatação do PHP no simulador interativo abaixo. Altere a string de máscara e veja como o interpretador do servidor traduz os dados instantaneamente na tela:

Simulador de Máscara da Função date()

⚠️ Alerta / Atenção Sênior: O Perigo da Omissão do Timezone
Por padrão, a função date() consome a configuração do arquivo diretivo php.ini da máquina local. Se o servidor de produção da nuvem (AWS, Google Cloud ou Azure) estiver localizado fisicamente nos Estados Unidos ou Europa, seus relatórios de horários sairão completamente distorcidos. Force sempre a sincronização correta no topo do seu script usando a função de inicialização de fuso: date_default_timezone_set('America/Sao_Paulo');.

Conquiste Autonomia Máxima na Engenharia de Software 🛠️

O mercado de desenvolvimento web busca engenheiros que constroem soluções robustas de ponta a ponta. Dominar funções de data é apenas um bloco de construção. Para se consolidar como um Desenvolvedor Full-Stack disputado, você precisa de domínio em bancos SQL de alta carga, segurança em sessões e programação reativa. Conquiste o nosso Mega Pack Completo com 7 Manuais Técnicos Pró e acelere sua promoção!

Mega Pack completo do Projeto Progressivo contendo apostilas de PHP, Java, C e Front-end

Consolide seu Conhecimento (O que estudar a seguir)

Formatar exibições temporais é o fundamento para gerenciar fluxos lógicos cronometrados nas aplicações. Continue sua evolução lendo as nossas recomendações:

  • Validação de Calendários: Descubra como impedir de forma definitiva que dados impossíveis (como 31 de novembro) corrompam seus formulários utilizando a nossa aula sobre Como Validar Datas com Segurança usando a Função checkdate().
  • Documentação Oficial: Consulte a tabela estendida com todas as dezenas de tokens avançados diretamente na Documentação Oficial da Função date() na PHP.net.
  • Evolução Orientada a Objetos: Entenda como fazer cálculos complexos de intervalos e diferenças entre datas utilizando a moderna e imutável Classe DateTime e Modificadores de Período.

Perguntas Frequentes (FAQ) da Comunidade

Como traduzir automaticamente os meses e dias de date() para o Português?

A função nativa date() retorna exclusivamente strings estáticas com nomenclatura em inglês. Para obter datas por extenso em português de forma automática baseada no servidor, o padrão moderno do mercado de TI é utilizar a classe de internacionalização IntlDateFormatter ou configurar a localização local via setlocale(LC_TIME, 'pt_BR') em conjunto com o método de formatação apropriado.

Como incluir palavras estáticas dentro da string de formato de date()?

Se você tentar escrever um texto diretamente na string (Ex: "date('d de F')"), o PHP tentará interpretar as letras "d" e "e" como tokens de substituição. Para injetar termos textuais fixos, você deve escapar cada caractere individualmente utilizando barras invertidas (Ex: date("d \d\e F")), o que fará a engine ignorá-los como códigos lógicos.

Nenhum comentário: