>> [1] https://bugs.launchpad.net/ubuntu/+source/coreutils/+bug/354793 > > Complementando, note que 18/10/2009 foi o dia da entrada do Brasil no > horário de verão. Temos em [2] outra thread interessante. > > [2] http://lists.gnu.org/archive/html/bug-coreutils/2007-09/msg00176.html
Isso é importante, visto que todos nós trabalhamos em vários momentos com datas e nos valemos muito do comando date. Quando fazemos date --date="2009-10-18", date irá interpretar a data como "2009-10-18 00:00:00". Analisando o timezone America/Sao_Paulo, já preparado para a entrada do Brasil no horário de verão, temos: mrb...@astarte:~$ zdump -v America/Sao_Paulo | grep 2009 America/Sao_Paulo Sun Oct 18 02:59:59 2009 UTC = Sat Oct 17 23:59:59 2009 BRT isdst=0 gmtoff=-10800 America/Sao_Paulo Sun Oct 18 03:00:00 2009 UTC = Sun Oct 18 01:00:00 2009 BRST isdst=1 gmtoff=-7200 Veja que não existe 00:00:00 do dia 18/10/2009. Esse é o motivo do date retornar como data inválida. Para provar, fazemos: $ date --date="2009-10-18 01:00:00 +1 days" Mon Oct 19 01:00:00 BRST 2009 Quando faço atualizações de timezone para o horário de verão, por ter processamentos que iniciam-se pouco depois das 00:00, eu não posso simplesmente "pular" das 23:59 para a 01:00. Então modifico meu timezone "na mão", de forma que eu pule das 02:00 para as 03:00. Assim, sempre vai existir para mim a data 2009-10-18 00:00:00. Como resolver ? Siga as instruções do CAIS para compilar um arquivo zic, modificando os horários de entrada e saída do horário de verão.
