Formato de fecha para variable

Formato de fecha para variable

Necesito escribir una variable con función "fecha" y necesito que el formato sea aaaammdd (es decir, 20151031). También eliminaría un día (es decir, 20151031 se convierte en 20151030). Usaría bash.

¡Gracias!

Respuesta1

Se utiliza date +%Y%m%dpara imprimir la fecha actual.
Se utiliza date --date '1 day ago' +%Y%m%dpara imprimir la fecha de ayer (GNU date).
Uso date -v -1d +Y%m%d(FreeBSD).

Respuesta2

bash-4.2 y superiores tienen soporte integrado para eso (inspirado en algo similar en ksh93):

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

Imprimiría la fecha de ayer (bueno, la fecha de hace 86400 segundos) en formato AAAAMMDD. Es posible que no funcione si se ejecuta a determinadas horas de la noche en el momento del cambio de horario de invierno/verano (cuando los días duran 23 o 25 horas).

Probablemente sería más confiable para esos casos extremos si se escribiera como:

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

información relacionada