Como obter o ano atual em PHP? 5 maneiras simples

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução: por que a pergunta sobre o "ano atual" é tão popular?

\n\n

Parece simples perguntar ao PHP: "Ei, que ano é agora?" — e obter a resposta. Mas não é bem assim! A pergunta "How do I use PHP to get the current year?" acumulou dezenas de milhares de visualizações no Stack Overflow. Por quê?

\n\n

Primeiro, é uma das primeiras tarefas que um iniciante enfrenta: exibir no rodapé do site "© 2024", criar uma lista dinâmica de anos em um formulário de cadastro ou simplesmente verificar a idade do usuário. Segundo, o PHP oferece várias abordagens diferentes, e cada uma tem suas nuances. Terceiro (e este é o mais traiçoeiro), iniciantes frequentemente confundem date('y') e date('Y') — e obtêm 24 em vez de 2024. Depois se perguntam por que o site "vive" no século passado.

\n\n

Neste artigo, vamos explorar todas as maneiras populares de obter o ano atual em PHP, desde as mais óbvias até as mais avançadas. Você aprenderá como evitar erros comuns, qual método escolher para seu projeto e como trabalhar com o ano em diferentes fusos horários. Vamos lá!

\n\n

1. A maneira mais simples: a função date()

\n\n

O rei de todas as funções PHP para trabalhar com datas é date(). Ela aceita um formato e, opcionalmente, um timestamp. Se nenhum timestamp for fornecido, usa a hora atual do servidor.

\n\n

Como obter o ano com 4 dígitos (2024, 2025…)

\n
<?php\necho date('Y'); // Exibe: 2024\n?>
\n\n

O caractere Y (maiúsculo) representa o ano completo, com 4 dígitos. É o que você deve usar em 99% dos casos.

\n\n

Como obter o ano com 2 dígitos (24, 25…)

\n
<?php\necho date('y'); // Exibe: 24\n?>
\n\n

O caractere y (minúsculo) representa o ano com dois dígitos. Use-o apenas se estiver escrevendo um programa de brinquedo ou trabalhando com código legado (que provavelmente já está quebrado devido a problemas semelhantes ao Y2K).

\n\n

Exemplo prático: copyright no rodapé

\n
<footer>\n    <p>&copy; 2010–<?php echo date('Y'); ?> Meu super-site</p>\n</footer>
\n\n

Esse código atualiza automaticamente o ano no rodapé — você não precisará corrigi-lo todo mês de janeiro. Legal, né?

\n\n

2. Abordagem orientada a objetos: a classe DateTime

\n\n

Se você está escrevendo PHP moderno (7.x, 8.x), é melhor usar a classe DateTime. Ela é mais flexível, fácil de manipular e mais legível.

\n\n

Obtendo o ano com DateTime

\n
<?php\n$now = new DateTime();\necho $now->format('Y'); // 2024\n?>
\n\n

O método format() funciona da mesma forma que date(), mas em um objeto. A vantagem é que você pode facilmente alterar a data, adicionar dias, meses e depois formatá-la novamente.

\n\n

Exemplo avançado: ano a partir de uma data específica

\n
<?php\n$date = new DateTime('2023-03-15');\necho $date->format('Y'); // 2023\n?>
\n\n

Isso é útil quando você trabalha com um banco de dados e armazena datas como strings.

\n\n

3. O bom e velho strftime() (mas com ressalvas)

\n\n

A função strftime() é outra maneira de obter o ano. Ela é boa porque leva em conta a localidade (idioma e configurações regionais). Por exemplo, em português brasileiro, ela pode exibir o nome do mês em português.

\n\n

Exemplo com strftime

\n
<?php\nsetlocale(LC_TIME, 'pt_BR.utf8');\necho strftime('%Y'); // 2024\n?>
\n\n

Mas há uma ressalva importante: a partir do PHP 8.1, a função strftime() foi marcada como obsoleta (deprecated). Ela ainda pode ser usada, mas pode ser removida em versões futuras. Se estiver escrevendo código novo, é melhor usar DateTime.

\n\n

4. A variável $_SERVER['REQUEST_TIME']

\n\n

Às vezes, você precisa obter o ano "em tempo real", sem criar objetos. Para isso, pode usar o array superglobal $_SERVER.

\n\n


                
                

Blogs

Book Recommendations