Dominando a Função getdate() no PHP: Como Transformar Timestamps em Arrays Completos
O Mapa do Tempo: Dissecando Datas no Back-end
Se você já construiu algum sistema real — seja um painel administrativo, um sistema de agendamento de consultas ou até um blog corporativo —, sabe que manipular tempo é uma das tarefas mais sensíveis na engenharia de software.
Muitas vezes, você não quer exibir apenas uma data estática formatada. Você precisa separar cada pedaço da data (ano, mês, dia da semana) para alimentar o banco de dados, montar lógicas condicionais ou até gerar relatórios mensais. É exatamente para esse nível de granularidade e controle que a engine do PHP nos fornece a poderosa getdate().
O que é a função getdate() no PHP?
A função getdate() no PHP é um recurso nativo usado para converter uma Unix Timestamp em um array associativo detalhado. Ela retorna 11 chaves contendo as representações numéricas e textuais da data local, como o dia da semana, o número do mês e a hora, facilitando lógicas complexas de calendário.
A assinatura de tipos (sintaxe) dessa função é extremamente simples de entender e invocar:
array getdate (?int $timestamp = null)
Ou seja, nós enviamos um Unix Timestamp inteiro como parâmetro (ou deixamos em branco para pegar a data atual) e a função fará todo o trabalho pesado de cálculo matemático do calendário gregoriano, nos devolvendo um Array recheado de informações prontas para uso.
A Anatomia do Array Retornado
Ao capturar o retorno de getdate(), você recebe em mãos um array associativo contendo exatamente 11 elementos. Cada um funciona como uma peça de um quebra-cabeça temporal. Vamos conhecer cada chave de perto:
- seconds: Representação numérica dos segundos, variando de
0a59. - minutes: Representação numérica dos minutos, variando de
0a59. - hours: Representação numérica da hora do dia, variando de
0a23(padrão militar). - mday: Representação numérica do dia dentro do mês, indo de
1até31. - wday: Representação numérica do dia da semana. Atenção aqui:
0é Domingo e vai até6(Sábado). - mon: Representação numérica do mês, de
1até12. - year: Representação numérica do ano completo com 4 dígitos (ex:
2026). - yday: O dia do ano, contando de forma corrida (de
0até365). Útil para cálculos de proporção anual. - weekday: Nome do dia da semana escrito por extenso em inglês (ex: Monday, Friday).
- month: Nome do mês por extenso em inglês (ex: January, December).
- 0: A chave zero guarda a própria Timestamp (os segundos desde a Era Unix) original utilizada para a conversão.
[mon]) para alimentar um array próprio de tradução, construindo sistemas multilinguagem eficientes e sem dependências pesadas!
Exemplo de Uso da getdate() com Datas Passadas
Para entender melhor o formato desse retorno, vamos invocar o fantasma do passado! Criaremos uma variável para guardar a timestamp estática 1550931619 (que geramos nas primeiras versões deste tutorial anos atrás).
Na sequência, vamos passar esse valor arbitrário para a nossa função e visualizar toda a estrutura retornada. Como o retorno é um Array, usaremos a função print_r(), pois o echo padrão causaria um erro fatal de conversão (Array to string conversion).
<?php
// Definimos uma Timestamp fixa do passado
$marca_temporal = 1550931619;
// A getdate() lê os segundos e faz a mágica de separar tudo
$dados_da_data = getdate($marca_temporal);
// Usamos a tag pre do HTML para formatar melhor a exibição no navegador
echo "<pre>";
// Printamos a estrutura do array associativo
print_r($dados_da_data);
echo "</pre>";
?>
Ao rodar o script no seu servidor Apache/Nginx, a resposta de saída (Output) do navegador será exatamente a "radiografia" daquele segundo histórico:
[seconds] => 19
[minutes] => 20
[hours] => 11
[mday] => 23
[wday] => 6
[mon] => 2
[year] => 2019
[yday] => 53
[weekday] => Saturday
[month] => February
[0] => 1550931619
)
Se você precisasse montar uma string de auditoria de banco de dados, bastaria acessar: $dados_da_data['year'] para pegar "2019". Limpo, semântico e robusto.
Exercício: Pegando e Desmembrando a Data Atual Dinamicamente
Desafio: Crie um script dinâmico que não dependa de uma data fixa. Ele deve pegar o exato milissegundo do relógio do seu servidor no momento da requisição do usuário, enviar para o processamento da getdate() e imprimir o array na tela.
date("U") para capturar o momento de "agora" em segundos. Embora funcione, é um desperdício de recursos instanciar a classe string Date só para gerar um número. Em sistemas reais de alto desempenho, a forma mais rápida e leve de pegar a timestamp atual no PHP é usando a função nativa time().
Vamos resolver o exercício usando boas práticas do mercado corporativo:
<?php
// Pega a timestamp do exato segundo em que o servidor processou a linha
$agora = time();
// Podemos armazenar o array gerado e acessar individualmente depois
$informacoes_hoje = getdate($agora);
// Imprimindo uma frase customizada pegando apenas o que importa!
echo "Ei dev, hoje é dia " . $informacoes_hoje['mday'] . " do ano de " . $informacoes_hoje['year'] . "!";
echo "<br>";
// Para efeito de estudos, vamos printar tudo para você ver!
echo "<pre>";
print_r($informacoes_hoje);
echo "</pre>";
/* * Versão Ninja (One-liner):
* print_r( getdate( time() ) );
*/
?>
⚙️ Simulador de Retorno no Front-End
Diferente do back-end (PHP) que roda escondido no servidor, simulamos abaixo como a função se comportaria separando uma data em JavaScript. Interaja para ver a separação lógica de dados:
Raio-X: Desmembrador de Datas
Ao clicar abaixo, capturamos o momento atual do seu dispositivo e separamos as entidades do tempo:
Acelere Sua Carreira em TI com a Base Certa 🚀
As grandes companhias de tecnologia não pagam altos salários para quem apenas "copia códigos". Elas contratam os profissionais que entendem a base, a lógica e sabem otimizar algoritmos no back-end. Adquira agora o Mega Pack Completo com 7 Apostilas Premium do Projeto Progressivo, domine PHP, Java, C e garanta seu espaço na elite do mercado!
Consolide seu Conhecimento (O que estudar a seguir)
Dominar os vetores estruturais do tempo te permite construir sistemas eficientes de bilhetagem, fóruns e logs de auditoria. Para não esquecer nada, navegue pelas fundações do assunto:
- Revisão Essencial: Se você não entendeu por que não usamos
echonesse tutorial, revise nossa aula vital sobre Como criar, acessar e imprimir Arrays com print_r(). - Marca Temporal: Caso as palavras "Unix Timestamp" soem esquisitas, veja como a engine gera os segundos a partir da data clássica na aula sobre A Função mktime() e a Origem do Tempo Computacional.
- Documentação Oficial: Como um verdadeiro dev, consulte sempre os comportamentos avançados diretamente na página da API da getdate() no manual oficial do PHP.
Perguntas Frequentes (FAQ) da Comunidade
O que acontece se eu usar getdate() sem passar nenhum parâmetro?
getdate(), a função invoca secretamente a engine do relógio local (equivalente a chamar a função time()) e extrai o array baseando-se no momento exato, milissegundo a milissegundo, em que o script está sendo executado no seu servidor.
Qual a diferença entre usar date() e getdate() na lógica de negócio?
date() retorna uma String formatada (um texto visual, ótimo para imprimir na tela). Já a função getdate() devolve a mesma informação, mas em formato de Array Associativo Inteiro, o que a torna a escolha perfeita para cálculos numéricos no Back-end, montar laços de repetição ou salvar as fatias da data isoladamente em colunas de um banco MySQL.
Nenhum comentário:
Postar um comentário