Formato de data para variável

0

Eu preciso escrever uma variável com a função "date" e preciso que o formato seja yyyymmdd (por exemplo, 20151031). Também removerei um dia (por exemplo, 20151031 se torna 20151030) Eu usaria bash.

Obrigado!

    
por Federi 03.11.2015 / 14:17

2 respostas

3

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

    
por 03.11.2015 / 14:25
2

bash-4.2 e acima têm suporte embutido para isso (inspirado em algo similar em ksh93):

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

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

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

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