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%d
para imprimir la fecha actual.
Se utiliza date --date '1 day ago' +%Y%m%d
para 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#*:})))"