Timezone no PHP

Muitas vezes o horário de verão brasileiro pode afetar o funcionamento de nossas aplicações escritas em PHP que utilizem funções de data, e para que não aconteça nenhum problema existem algumas alternativas que podem ser adotadas para automatizar o processo de transição de horário (BRT/BRST).

A mais comum delas (e menos eficiente na minha opinião) é setar o horário diretamente no seu php.ini através da linha:

date.timezone = "Etc/GMT+2"

Sendo que também é possível utilizar esta chamada diretamente no script de sua aplicação com:

date_default_timezone_set("Etc/GMT+2");

A forma mais eficiente que encontrei para realizar estas transições de horário de forma automática foi utilizando o módulo php-timezonedb que está disponível através do PECL.

Para realizar a instalação do timezonedb é necessário ter as bibliotecas do php (php-dev) disponíveis na máquina.

A forma mais prática de instalação é diretamente através do repositório PECL:

# pecl install timezonedb

E para carregar o módulo na inicialização do PHP, adicione ao php.ini (ou uma entrada no php.d):

extension=timezonedb.so

Para testar o módulo sem a necessidade de reiniciar o servidor web utilize o próprio php-cli:

# php-cli -r "print date('d/m/Y H:i:s e T');"

A saída (em horário de verão) será algo parecido com:

04/02/2008 19:23:32 America/Sao_Paulo BRST

E em horário normal:

04/02/2008 19:23:32 America/Sao_Paulo BRT

Para instalação em um número elevado de servidores é recomendável utilizar o proprio empacotamento de sua distribuicaopara automatizar o processo. Para aqueles que utilizam distribuicoes baseadas em RPM, deixei o pacote source disponivel para downloadphp-timezonedb.el4.src.rpm

Share and Enjoy:
  • email
  • Facebook
  • del.icio.us
  • Google Bookmarks
  • Yahoo! Bookmarks
  • LinkedIn
  • Twitter
  • Digg
  • Slashdot
  • Technorati
  • Identi.ca
  • Live

Leave a Reply