Início > PHP > Horário de Verão

Horário de Verão

Quando chega próximo do horário de verão, é unânime na empresa onde eu trabalho o seguinte pensamento: “ih, problemas a vista, fodeu…“.
E não é pra menos, neste ano tivemos os mesmos problemas do ano passado. Uma semana antes do horário de verão, os servidores já estavam adiantados. A principio todos achavam que era só acertar o relógio do windows/linux, mas nem sempre isto resolve. Na realidade ambos os relógios estavam corretos.

Toda essa bagunça por conta da nova lei que define o início do horário de verão na 3ª semana de todo o mês de outubro.

No nosso caso, descobrimos que o servidor de aplicação (JBoss) foi o culpado por essa falha. Num outro servidor, o problema foi do PHP, e é em torno deste último caso que abordarei o post de hoje.

Fuçando um pouco para resolver este problema descobri que o PHP possui uma própria configuração dos chamados timezones e que, nas versões mais antigas, é muito comum ocorrer estes problemas.
Chega de lero-lero e vamos para os jeitinhos:

Jeito Certo:
Segundo alguns blogs e mais algumas pesquisas no Google, a forma correta de resolver isto no PHP é instalando a extensão timezonedb, disponível no endereço: http://pecl.php.net/package/timezonedb.

Infelizmente, eu dei uma lida por cima e vi que isso iria me dar muito trabalho (se alguém se dispor a compartilhar um tutorial simplificado, eu agradeço xD), e eu precisava de uma solução imediata, nem que fosse a famosa “gambiarra“. Por isso, mostro a vocês o outro jeito!

Jeitinho:
O famoso jeitinho, neste caso, é abrir o arquivo php.ini (dentro do diretório do PHP, no servidor ou na sua máquina) e procurar pelas linhas abaixo:

[Date]
; Defines the default timezone used by the date functions
;date.timezone =

Basta descomentar a linha date.timezone (removendo o ponto-e-vírgula) e inserir o valor correspondente ao seu fuso horário correto.

Uma lista completa dos valores corretos está disponível no próprio site do PHP, em http://www.php.net/manual/en/timezones.america.php.

No meu caso, como estou em São Paulo, eu procurei na lista e escolhi America/Sao_Paulo, pensando “caraca, me dei bem, vamos testar…“. É meus amigos, alegria de pobre dura pouco e não funcionou (Lei de Murphy). E agora? Google!

Lá vou eu digitar: “php timezone” ver se encontro alguma luz no fim do túnel, e… voilá! Encontrei o blog da Renata que retratava o mesmo problema. Porém, a solução que ela adotou foi utilizar o valor Etc/GMT+3. Ao testar deu certo! Desse jeito, a linha fica da seguinte forma:

date.timezone = Etc/GMT+3

Basta salvar o arquivo e reiniciar o servidor web.
A desvantagem desse método é que a configuração deve ser feita manualmente, ou seja, sempre que for começar/terminar o horário de verão, você terá que ficar atento para realizar a atualização. Lembrando que, para aumentar ou diminuir o horário, basta mudar para GMT+2, GMT+4, etc…

Por hoje é isso ai. O blog fica aberto para dúvidas, críticas, sugestões e outros jeitinhos que vocês queiram compartilhar!

Abraços!

Categorias:PHP Tags:, ,
  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: