En Linux, puedo obtener el mes pasado usando
date -d "last month" '+%Y%m'
o
date -d "1 month ago" '+%Y%m'
Pero digamos, hoy es 31 de marzo, si ejecuto el comando en la parte superior, muestra 201603, pero quiero obtener el mes pasado independientemente del día en que me encuentre ahora; ¿como lo puedo hacer?
Puedo lograrlo usando una solución alternativa como obtener el primer día / último día del mes anterior, pero me pregunto si hay alguna forma elegante de hacerlo.
date -d "-$(date +%d) days" '+%Y%m' #get last day of previous month
Respuestas:
La sabiduría habitual es usar el 15 de este mes. Luego reste 1 mes:
fuente
GNU date
no es particularmente adecuado para la aritmética como pretendes. Esa es una de las razones por las que escribídateutils
.Su ejemplo se reduciría a:
Y hace lo correcto el 31 de marzo:
O lo que quieres decir con tu comentario (obteniendo el último día del mes anterior) independientemente de la fecha de hoy:
fuente