¿Cómo obtengo la fecha de finalización del mes anterior, según la fecha de procesamiento?
Ejemplos:
- Fecha de procesamiento = 15jan2015
- Fecha esperada = 31dec2014,
- Fecha de procesamiento = 10feb2015
- Fecha esperada = 31jan2015
shell-script
usuario128856
fuente
fuente

TZ=Pacific/Apia faketime '2011-12-31 12:00' date -d '1 day ago'. Recibe un error porque no había 2011-12-30 allí. Es decir, el desplazamiento del día se realizó en la hora del calendario. 31/12/2011 menos 31 días le da 30/11/2011 porque le quita 31 de 31. No le quita 31 * 24 * 60 * 60 * 60 segundos de la hora actual. Compare con loTZ=Pacific/Apia faketime '2011-12-31 12:00' date -d '24 hour ago'que le da el 29, es decir, esta vez, la fecha en que fue hace 24 * 60 * 60 * 60 segundos.Aquí hay una versión que funciona en Mac OS, que utiliza la
dateutilidad BSD :date -v1d -v-1d +%d%b%YLos argumentos se aplican en orden. Puede imaginarse que una fecha se canaliza de un argumento a otro. Por ejemplo:
date) -> 2017-03-06-v1d) -> 2017-03-01-v-1d)-> 2017-02-28+%d%b%YDar formato a la fecha ( ) -> 28 de febrero de 2017Puede alcanzar cualquier cantidad de meses hacia adelante o hacia atrás usando
date -v-1m -v1d -v-1d, reemplazando-1mcon la cantidad de meses hacia atrás o hacia adelante (+1m) que desee.Esa es la respuesta genérica. Esta pregunta específicamente pregunta sobre fechas relativas a una fecha de inicio. La utilidad de fecha Mac OS / BSD no le permite proporcionar un sello de fecha para comenzar, pero puede configurar cada elemento de fecha individualmente:
date -v2015y -v1m -v15d -v1d -v-1d +%d%b%Y-> 31dic.2014fuente
Intenta usar este código
fuente