Blog

LISTAR TODOS OS POSTS - Assine os feeds dos posts e comentários

Atualização do horário de verão no PHP

Publicado/atualizado em 17/10/2006 14:40

Para os que pensavam que eu trabalho todo dia com Rails, devo dizer que estão enganados, ainda mantenho alguns projetos grandes com PHP e não vai dar para migrar tão cedo por causa de uma coisa chamada tempo, que desaparece mesmo com todos os ganhos de produtividade que o Rails nos dá, mas enfim ... ainda uso bastante PHP. :-)

E nesses últimos dias tive um problema com o horário de verão. Depois que foi anunciado oficialmente, atualizei os meus computadores de acordo com as instruções mas servidor web insistia em mostrar a hora adiantada. Aí fiz uma pesquisa rápida e descobri (é, só vim a saber disso agora, vergonha!) que o PHP mantém um banco de dados de timezones similar ao Java, por um lado pior e por um lado melhor.

Pior pois no Java dá para fazer algumas gambiarras e criar uma timezone com o horário de verão customizado, melhor pois no PHP dá para se atualizar o banco de dados usando uma extensão chamada timezonedb, mas há de se esperar que seja atualizada com as últimas alterações do nosso horário de verão.

Por sorte enviei um email para o mantenedor da extensão, e sorte ou coincidência, poucos minutos após ele responder o email enviou outro com a atualização da mesma. Eu fiz um teste antes de habilitar a extensão:

[taq@~]php -r "print date('d/m/Y H:i:s e T');"
17/10/2006 19:31:01 America/Sao_Paulo BRST

Após atualizar a extensão (que deve ser devidamente indicada no arquivo php.ini como extension=timezonedb.so), o comando acima me retornou:

[taq@~]php -r "print date('d/m/Y H:i:s e T');"
17/10/2006 18:31:01 America/Sao_Paulo BRT

Ou seja, o horário correto, pois nosso horário de verão só começa no próximo dia 5 de Novembro.

Permalink: http://eustaquiorangel.com/posts/308

salvar no del.icio.ussalvar no diggsalvar no rec6 Veja o que estão dizendo sobre isso.

Comente

Linhas em branco viram saltos de linha. Se você quiser mostrar algum código, por favor use o pastebin e informe a URL.

*

*

Responda: Qual a cor de um carro preto?  
Clique aqui se não souber essa resposta!

* campos obrigatórios

Comentários

1 - Fischer disse em 11/10/2007 13:28

Instructions on how to update PHP's timezonedb

http://fischer.tecnologia.ws/en/node/1


2 - Adriano disse em 16/10/2007 12:07

Eita, não sabia disso também... Valeu a dica!


3 - Adriano disse em 16/10/2007 12:51

Uma outra forma de fazer que deu certo pra mim com PHP4 foi jogar essa função no início do código (num include desses qq):

putenv("TZ=America/Sao_Paulo");

É possível ver aqui a lista de zonas: http://www.theprojects.org/dev/zone.txt


4 - Isaac Pessoa disse em 23/10/2007 03:47

só descomentei e modifiquei essa linha no php.ini e funcionou.

date.timezone = Etc/GMT+2

ficou com o horário de brasilia!

na verdade é um fuso a mais, porque internacionalmente não existe horário de verão, mas para aqueles que precisam adiantem um fuso.

Se eu estiver falando besteiras é só falar.


5 - Marcio Ghiraldelli disse em 29/10/2007 04:01

Só para deixar o post perfeito, comando para instalar a lib no Linux:

pecl install timezonedb


Anterior Próximo Últimos Índice