Não há uma data fixa pré-estabelecida para o início e término do horário de verão no Brasil.
No ano de 2019, por exemplo, o horário de verão não foi utilizado.
Como o sistema operacional segue a sincronização de relógios mundiais, faz-se necessário configurar estes ajustes em um arquivo de configuração.
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 o horário exato.
No nosso caso, vamos utilizar o arquivo: /usr/share/zoneinfo/America/Sao_Paulo
Inicialmente, é preciso criar um novo arquivo com a extensão .zic (por exemplo: /tmp/Sao_Paulo.zic) e escrever a configuração, como no caso abaixo, quando houver o horário de verão:
Rule BrazilSP 2019 only - Nov 02 0:00 1:00 S Rule BrazilSP 2020 only - Feb 20 0:00 0 - # Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] Zone America/Sao_Paulo -3:00 BrazilSP BR%sT
Ou a configuração abaixo, quando não houver o horário de verão:
Rule BrazilSP 2019 only - Jan 01 0:00 0:00 S # Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] Zone America/Sao_Paulo -3:00 BrazilSP BR%sT
Em seguida, vamos processar o arquivo de configuração utilizando o comando zic:
zic /tmp/Sao_Paulo.zic
Feito isso, vamos fazer um backup do timezone e localtime atuais e depois atualizar o timezone e o localtime:
cp /usr/share/zoneinfo/America/Sao_Paulo /usr/share/zoneinfo/America/Sao_Paulo.bak
cp /etc/localtime /etc/localtime.bak
cp /tmp/Sao_Paulo.zic /usr/share/zoneinfo/America/Sao_Paulo
cp /tmp/Sao_Paulo.zic /etc/localtime
Agora basta conferir o horário utilizando o comando date:
#date
Sáb Nov 9 12:07:49 BRST 2019