você está aqui: Home  → Arquivo de Mensagens

Atualizando o timezone - Horário de Verão no PHP

Colaboração: Eduardo J. Chiconato

Data de Publicação: 19 de Outubro de 2007

É certo que essa dica está um pouco atrasada porém acho que é válida pro futuro ou até mesmo pra quem já deu um outro jeitinho, mudar como o PHP "vê" o horário de verão.

Encontrei na net outras formas de "corrigir o problema", do tipo:

Setando o date.timezone no php.ini para "Etc/GMT+2" OU setando o timezone no script ... date_default_timezone_set("Etc/GMT+2");

O que funciona ... até o término do horário de verão onde será necessário alterar de novo.

Nessa dica eu considerei os "comandos" e "paths de arquivos" numa máquina com a instalação abaixo, dependendo se sua instalação será necessário usar os devidos comandos e paths.

"Deve" funcionar em qualquer distribuição Linux, com php 4.0.0 ou mais novo e creio que a versão do Apache, nesse caso, é irrelevante ... talvez a forma como deverá ser restartado seja diferente.

Instalado em minha máquina:

  • Debian 2.6.18-5-k7
  • Apache/2.2.3
  • PHP Version 5.2.0-8+etch7

Requisitos:

  • make
  • phpize (É uma das "ferramentas" do php-dev)
  • pear (Sem o phpize, o pear para esse tutorial não funcionará e o pear é necessário para instalar extensões PECL)
  • timezonedb-2007.8.tgz (Extensão PECL com timezones e "horários de verão" atualizados)

Instalando (Considerando instalar todos os requisitos):

  # apt-get install make
  # apt-get install php-pear

Eu não conheço uma forma de instalar somente o phpize, portanto ...

  # apt-get install php5-dev

O timezonedb não consta no repositório do pear portanto deve ser baixado a versão mais nova, hoje é a 2007.8 do http://pecl.php.net/package/timezonedb e instalado local. Salve o "tgz" em qualquer pasta e nessa pasta ...

  # pear install timezonedb-2007.8.tgz

OU pra facilitar e visando uma futura automatização via shell script, que vc pode criar e registrar no cron para que rode de tempos em tempos ... (dica do amigo e meu professor de Linux: Evandro F. Abitante)

  # wget http://pecl.php.net/get/timezonedb
  # pear install timezonedb

Ao final da instalação, vc será instruído à inserir a seguinte linha no php.ini:

  extension=timezonedb.so
  # vi /etc/php5/apache2/php.ini

Caso use o php-cli também, então acrescente a linha "extension=timezonedb.so" no php.ini do php-cli ...

  # vi /etc/php5/cli/php.ini

Restarte o apache

  # /etc/init.d/apache2 restart

Teste se funcionou

Ao instalar o pear, também é instalado o php-cli e se vc editou o php.ini ...

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

Ou então, crie um script e acesse pelo browser ...

  <?php
     echo date('d/m/Y H:i:s e T');
     /*
     Supondo que agora é 17/10/2007 23:59:51
     Horário de Verão e o seu timezone no php.ini é o default, ou seja,
     está comentado e portanto é usado o timezone de quando o php foi instalado,
     deverá ser retornado, no meu caso, ...
     17/10/2007 23:59:51 America/Sao_Paulo BRST
  
     Antes da atualização seria retornado ...
     17/10/2007 22:59:51 America/Sao_Paulo BRT
     */
  ?>

Bom, no dia 17/02/2008 00:00:00 (término do horário de verão), o retorno deverá ser ...

  16/02/2008 23:00:00 America/Sao_Paulo BRT

Se porventura, houver alteração na data de encerramento, será necessário instalar uma nova versão do timezonedb assim como será necessário essa instalação todo ano e quando for disponibilizado; o que deve ocorrer pouco tempo depois da publicação do decreto.

Só que dessa vez a atualização "provavelmente" se resumirá a baixar a nova versão (AAAA.V) do timezonedb e ...

  # pear install timezonedb-AAAA.V.tgz

Digo "provavelmente" porque instalei somente 1 vez

Caso seja de interesse, no site http://pcdsh01.on.br/DecHV.html é apresentado todos os "Decretos sobre o Horário de Verão no Brasil" com Estados participantes e período.



Veja a relação completa dos artigos de Eduardo J. Chiconato

 

 

Opinião dos Leitores

Fernando Fernandes
22 Out 2012, 10:54
Muito bom! Ajudou muito!
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script