getdate()
Aprenda a função PHP getdate(): sintaxe, parâmetros, o array associativo retornado e exemplos práticos para trabalhar com datas e timestamps.
Introdução
A função PHP getdate() divide uma data em suas partes individuais — ano, mês, dia, hora, nome do dia da semana e mais — e as retorna como um array associativo. Por padrão, ela descreve o horário local atual, mas você pode passar qualquer timestamp Unix para descrever um momento diferente.
Um timestamp Unix é um inteiro que conta o número de segundos desde 1 de janeiro de 1970, 00:00:00 UTC (a "época Unix"). Funções como time(), mktime() e strtotime() produzem esses timestamps, e getdate() transforma um deles em uma representação legível.
Esta página aborda a sintaxe, cada chave do array retornado, exemplos executáveis e como getdate() se compara à classe moderna DateTime.
Sintaxe e Parâmetros
A sintaxe do getdate() é a seguinte:
getdate(int $timestamp = time()): arrayO único parâmetro opcional $timestamp é o timestamp Unix a descrever. Se omitido, getdate() usa time() por padrão — o momento atual. O resultado reflete o fuso horário configurado (consulte date_default_timezone_set() ou a configuração date.timezone no php.ini), então defina seu fuso horário se precisar de resultados consistentes entre servidores.
Valor de Retorno
getdate() retorna um array associativo descrevendo o timestamp fornecido. Veja a descrição de cada chave:
| Chave | Valor |
|---|---|
| "seconds" | Segundos (0-59) |
| "minutes" | Minutos (0-59) |
| "hours" | Horas (0-23) |
| "mday" | Dia do Mês (1-31) |
| "wday" | Dia da Semana (0-6, 0=Domingo) |
| "mon" | Mês (1-12) |
| "year" | Ano (ex.: 2023) |
| "yday" | Dia do Ano (0-365) |
| "weekday" | Nome completo do dia da semana (ex.: "Monday") |
| "month" | Nome completo do mês (ex.: "January") |
| "0" | Timestamp Unix (segundos desde 1 Jan 1970) |
| "zone" | Deslocamento do fuso horário em segundos em relação ao GMT |
Nota: a chave "0" (o timestamp bruto) é um inteiro; as demais também são inteiros, exceto "weekday" e "month", que são strings. A chave "is_dst" foi descontinuada no PHP 7.0 e removida no PHP 8.0.
Uso e Exemplos
Formatando a data atual
Chame getdate(), armazene o resultado e leia as chaves que precisar:
Isso produz algo como: Today is Thursday, March 3, 2023.
Descrevendo um timestamp específico
Passe um timestamp Unix para descrever um momento diferente do atual. Aqui usamos um timestamp fixo para que a saída seja reproduzível:
<?php
// 2021-12-25 00:00:00 UTC
$date = getdate(1640390400);
echo $date['weekday'] . ", " . $date['mday'] . " " . $date['month'] . " " . $date['year'] . PHP_EOL;
echo "Day " . $date['yday'] . " of the year, hour " . $date['hours'] . PHP_EOL;Assumindo um fuso horário UTC, isso imprime:
Saturday, 25 December 2021
Day 358 of the year, hour 0Construindo um timestamp primeiro e depois desmembrando-o
getdate() se combina naturalmente com mktime(), que constrói um timestamp a partir de partes individuais:
<?php
// mktime(hour, minute, second, month, day, year)
$timestamp = mktime(9, 30, 0, 7, 4, 2024);
$parts = getdate($timestamp);
echo "{$parts['weekday']} at {$parts['hours']}:{$parts['minutes']}";Isso imprime Thursday at 9:30.
getdate() vs. a classe DateTime
getdate() é conveniente para leituras rápidas e pontuais, mas para qualquer coisa envolvendo aritmética, comparação ou fusos horários, a classe orientada a objetos DateTime é a escolha moderna:
DateTimelida com cálculos de datas (->add(),->sub(),->diff()) de forma segura em limites de mês e ano.- Ela carrega um fuso horário explícito, evitando surpresas do padrão global.
- Ela formata a saída com
date-formatem vez de concatenação manual de strings.
Use getdate() quando precisar apenas de alguns campos de um timestamp; use DateTime quando precisar manipular ou comparar datas.
Conclusão
getdate() transforma um timestamp Unix em um array associativo rotulado, tornando-se uma maneira rápida de extrair o ano, o mês, o dia da semana ou qualquer outro componente de uma data. Para exibição e consultas simples é ideal; para aritmética de datas e lógica com fusos horários, prefira a classe DateTime.