Como definir um timezone no PHP
O timezone (fuso horário) define como o PHP interpreta datas e horários. Caso não esteja configurado corretamente, funções que lidam com tempo podem retornar valores errados, especialmente quando um código é executado em servidores com fusos diferentes.
Configurando o timezone no php.ini
A maneira mais recomendada de definir um timezone padrão para sua aplicação é configurando o php.ini
. Para isso, localize e edite este arquivo:
No Linux/macOS:
sudo nano /etc/php/{versao}/apache2/php.ini
No Windows (XAMPP):
C:\xampp\php\php.ini
Encontre a linha que contém date.timezone
e modifique-a conforme sua localização. Por exemplo, para definir o fuso do Brasil:
date.timezone = "America/Sao_Paulo"
Após a alteração, reinicie o servidor:
sudo systemctl restart apache2 # Para Apache
sudo systemctl restart php-fpm # Para Nginx com PHP-FPM
Definindo o timezone no código PHP
Caso não tenha acesso ao php.ini
ou precise definir o timezone dinamicamente, use o comando date_default_timezone_set()
no início do código:
<?php
date_default_timezone_set("America/Sao_Paulo");
echo "Data e hora atual: " . date("d/m/Y H:i:s");
?>
Isso garantirá que todas as funções de data e hora usem o fuso correto durante a execução do script.
Obtendo a lista de timezones disponíveis
Para saber quais fusos horários podem ser utilizados, execute:
<?php
print_r(timezone_identifiers_list());
?>
Isso imprimirá uma lista de todas as zonas suportadas pelo PHP.
Por que a configuração do timezone no PHP é tão importante?
A configuração do timezone é um detalhe muitas vezes ignorado no desenvolvimento, mas pode causar grandes impactos quando não é ajustada corretamente. Em aplicações web, trabalhar com fusos horários errados pode resultar em problemas em registros de banco de dados, timestamps inconsistentes e até falhas em sistemas de agendamento. Para aplicações globais, o ideal é permitir que usuários escolham seu próprio fuso horário ou utilizar UTC como padrão e converter conforme necessário. Dominar a configuração correta do timezone evita problemas inesperados e melhora a precisão das informações exibidas.
Algumas aplicações:
- Exibição correta de datas e horários em aplicações web
- Sincronização de horários em servidores com fusos diferentes
- Registro correto de logs e eventos em aplicações PHP
- Geração de relatórios e agendamentos baseados em horário local
Dicas para quem está começando
- Sempre defina um timezone para evitar problemas de horário.
- Use
date_default_timezone_set()
no código caso não tenha acesso ao php.ini. - Se a aplicação for global, utilize UTC e converta o horário para o fuso do usuário.
- Verifique a lista completa de timezones com
timezone_identifiers_list()
. - Se seu servidor estiver retornando horários incorretos, cheque a configuração de timezone do PHP.
Contribuições de Rafael Nogueira