Por que a saída de data X-3 em vez de X-2 dias, quando estou fazendo operações aritméticas

2

Em um dos meus roteiros, eu preciso encontrar uma data de dois dias a partir de uma determinada data. Eu tenho usado o abaixo sem qualquer problema desde muito tempo, mas é apenas a primeira vez que recebi um erro que perfurou o comando value by date errado.

$ date -d 20140331" - 2 days" +%Y%m%d

Saída esperada

20140329

Saída real

20140328

O uso de "- 2 days" dá a saída esperada, mas ainda se esforça para descobrir por que subtrair segundos não funcionou?

Observação: Meu processo é executado no meio do dia e, portanto, não vejo nenhuma condição de limite extremo como 1 segundo ter diminuído aqui e ali.

Mais algumas informações

$ date --version
date (GNU coreutils) 5.97
Copyright (C) 2006 Free Software Foundation, Inc.
    
por mtk 31.03.2014 / 15:08

1 resposta

2

Como o servidor está em execução no fuso horário BST, este é um problema relacionado à mudança recente do GMT para o BST, que ocorreu ontem. Às 01:00 da manhã de domingo, os relógios foram adiantados 1 hora (nós "perdemos" uma hora - portanto, o domingo tinha apenas 23 horas) para passar do GMT para o BST. Se você diz "dois dias atrás", isso é levado em consideração e a data está correta. No entanto, se você retroceder 172800 segundos (48 horas), a hora ausente fará com que você volte às 23:00 no sábado.

    
por 31.03.2014 / 15:39

Tags