Recuperar a data de ontem é uma tarefa frequente em scripts e automação Linux. Este guia apresenta dois métodos confiáveis usando o comando date
integrado e explora as considerações para lidar com fusos horários.
Sumário
Usando o comando date
A abordagem mais simples envolve usar diretamente a funcionalidade “ontem” integrada do comando date
:
date -d "yesterday" +%Y-%m-%d
Este comando:
date
: Chama o comando date.-d "yesterday"
: Especifica que queremos a data de ontem.+%Y-%m-%d
: Formata a saída como AAAA-MM-DD. Você pode personalizar isso (por exemplo,+%F
,+%Y/%m/%d
,+%d/%m/%Y
).
Exemplo: Se hoje é 2024-10-27, a saída será: 2024-10-26
Lidando com Fusos Horários para Maior Precisão
Para scripts que exigem cálculos de data precisos em diferentes fusos horários, é necessário um método mais robusto. Embora o método anterior geralmente seja suficiente, inconsistências podem surgir devido às mudanças de horário de verão. Esta abordagem refinada usa o tempo Epoch:
date -d "@$(($(date +%s) - 86400))" +%Y-%m-%d
Este comando:
date +%s
: Obtém o horário atual em segundos desde a época (1º de janeiro de 1970, 00:00:00 UTC).$(...)
: Substituição de comando, capturando a saída do comando interno.- 86400
: Subtrai 86400 segundos (um dia).@(...)
: Diz aodate
para interpretar o valor precedente como segundos desde a época.date -d "..." +%Y-%m-%d
: Formata o tempo Epoch resultante como AAAA-MM-DD.
Este método garante precisão manipulando diretamente o tempo Epoch, evitando possíveis ambiguidades relacionadas ao fuso horário.
Para a maioria dos cenários, o primeiro método usando date -d "yesterday"
é suficiente. No entanto, para aplicações críticas ou scripts entre fusos horários, a segunda abordagem fornece uma solução mais confiável. Lembre-se de adaptar o formato de saída às suas necessidades específicas.