Formato de data para variável

Formato de data para variável

Preciso escrever uma variável com função "data" e preciso que o formato seja aaaammdd (ou seja, 20151031). Além disso, eu removeria um dia (ou seja, 20151031 se torna 20151030) e usaria o bash.

Obrigado!

Responder1

Use date +%Y%m%dpara imprimir a data atual.
Use date --date '1 day ago' +%Y%m%dpara imprimir a data de ontem (GNU's date).
Usar date -v -1d +Y%m%d(FreeBSD).

Responder2

bash-4.2 e superior possuem suporte integrado para isso (inspirado em algo semelhante no ksh93):

printf -v now '%(%s)T' -1
printf '%(%Y%m%d)T\n' "$((now - 86400))"

Imprimiria a data de ontem (bem, a data de 86.400 segundos atrás) no formato AAAAMMDD. Pode não funcionar se for executado em determinadas horas da noite no horário de inverno/verão (quando os dias têm 23 ou 25 horas de duração).

Provavelmente seria mais confiável para esses casos extremos se escrito como:

printf -v now '%(%s:%H)T' -1
printf '%(%Y%m%d)T\n' "$((${now%:*} - 3600 * (12 + ${now#*:})))"

informação relacionada