Configurando corretamente para o Horário de Verão

Não há uma data fixa pré-estabelecida para o início e término do Horário de Verão no Brasil. A cada ano essa data é calculada de acordo com o pôr do sol. O problema é que nosso sistema não vai adivinhar isso. Esse artigo mostra como gerar um arquivo de zonas personalizado para seu sistema.

[ Hits: 61.457 ]

Por: Perfil removido em 07/11/2004


Introdução



Não há uma data fixa pré-estabelecida para o início e término do Horário de Verão no Brasil. A cada ano essa data é calculada de acordo com o pôr do sol. Em 2004 o horário de verão vai começou oficialmente no dia 02 de Novembro e terminará no dia 20 de Fevereiro de 2005.

O problema é que nosso sistema não vai adivinhar isso e provavelmente utilizar a data do ano passado (19 de Outubro a 15 de Fevereiro), portanto da data em que foi escrito esse artigo, muitos sistemas já deverão estar com a data errada.

Felizmente é fácil se definir isso no Linux. ;)

O comando a ser utilizado é o 'zic' - ZoneInfo Compiler. Ele vai gerar, a partir de um arquivo de dados, o arquivo binário que o Linux utiliza para saber as datas exatas. Esse arquivo se localiza normalmente em:

/usr/share/zoneinfo/America/Sao_Paulo

Agora nesse diretório, confira se existe um arquivo com mesmo nome, com extensão .zic (Sao_Paulo.zic). Caso exista, basta editá-lo conforme as informações abaixo. Se não existir, tudo bem, basta criar o arquivo em um lugar qualquer como /tmp com seu editor de texto favorito, e adicionar as seguintes linhas:

Rule    BrazilSP  2004    only    -       Nov     02      0:00    1:00    S
Rule    BrazilSP  2005    only    -       Feb     20      0:00    0       -

# Zone  NAME                    GMTOFF  RULES/SAVE      FORMAT  [UNTIL]
Zone    America/Sao_Paulo       -3:00   BrazilSP        BR%sT

Salve o arquivo como Sao_Paulo.zic e execute o seguinte comando como root:

# zic Sao_Paulo.zic

Feito isso, o arquivo: /usr/share/zoneinfo/America/Sao_Paulo vai ser atualizado com as novas definições de data.

Como último passo, o Linux utiliza o arquivo /etc/localtime para saber qual zona utilizar. Se seu arquivo /etc/localtime for um link simbólico(*1) para /usr/share/zoneinfo/America/Sao_Paulo já está tudo certo.

Caso não seja um link, basta copiar o que você acabou de alterar no lugar do atual. Como root:

# cp /etc/localtime /etc/localtime.backup
# cp /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime


E estará pronto! Basta conferir utilizando o comando date:

$ date
Sun Nov 7 23:06:52 BRT 2004

Note a zona "BRT" em vez de "BRST" (*2)

Artigo escrito por: Wagner Amaral em 21/10/2004 - 12:41

Considerações finais

  1. Se sua partição /usr não for a mesma do root "/", o arquivo /etc/localtime não deverá ser um link, visto que /usr será montada depois do kernel estar rodando, então o arquivo não será encontrado. Se seu /usr for montado, simplesmente copie o arquivo para /etc/localtime e estará resolvido.

  2. Para os curiosos:
    BRT == BRazilian Time (horário normal)
    BRST == BRazilian Saving Time (saving == econômico == horário de verão)
   

Páginas do artigo
   1. Introdução
Outros artigos deste autor

Sudo 1.8.12 - Parte I - Manual

Atualizar Switch 3Com 4400

Interagindo com servidores HTTP com Python

Grub animado no Ubuntu? BURG nele!

Passos essenciais para configurar sua impressora no Linux

Leitura recomendada

Controle sua banda de maneira simples e inteligente com CBQ

Instalando uma Nvidia no Debian

Instalando e configurando um sistema RAID 1 no Debian Lenny

Xen - XL.cfg - Sintaxe da Configuração de Domínios - Parte II

Instalando MariaDB no Debian e Ubuntu

  
Comentários
[1] Comentário enviado por fabio em 07/11/2004 - 19:44h

Aqui em casa criei um arquivo personalizado, o Gondor.zic. Me disseram que Gondor fica por aqui numa dimensão paralela. Segue o seu conteúdo:

---------------
Rule BrazilGN 2004 only - Nov 02 0:00 1:00 S
Rule BrazilGN 2005 only - Feb 20 0:00 0 -

#Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL]
Zone America/Gondor -3:00 BrazilGN BR%sT
---------------

Depois é rodar o:

# zic Gondor.zic

E boa! Para usuários de Debian mudar o timezone é simples, rode o comando:

# tzconfig

[]'s,
Fábio

[2] Comentário enviado por rbn_jesus em 08/11/2004 - 06:54h

sua dica é muito boa!!!!
obrigado.

[3] Comentário enviado por fernandofat em 09/11/2004 - 04:29h

A nível de cultura....
Para configurar o início e o fim do horário de verão no Windows utilize um programa chamado "tzedit.exe", ele é fornecido com o Resource Kit do Windows.

[4] Comentário enviado por srf em 09/11/2004 - 05:02h

Muito bom, eu estava precisando desta solução.... Parabens!

[5] Comentário enviado por vodooo em 28/02/2005 - 08:43h

Hehehe!!! Nada a ver mas eu odeio este horário de verão!!!

Abraços

[6] Comentário enviado por renato_pacheco em 14/10/2011 - 10:37h

Boa! Tive q modificar isso em um sistema Slack antigo (q tava pegando o horário d verão errado). Bastou criar um arquivo com o zic q tudo voltou ao normal.

Obrigado por colaborar!

[7] Comentário enviado por n4t4n em 18/10/2011 - 21:31h

Mandou bem! Valeu! 10


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts