Puede ver el problema activando el rastreo de shell:
+ date -d 'Apr 1 2016 - 1 month' +%B
March
++ date -d 'Apr 1 2016'
+ date -d 'Fri Apr 1 00:00:00 EDT 2016 - 1 month' +%B
February
Cuando usa la salida del date
comando interno , es a principios de abril, y al restar un mes se encuentra con la discontinuidad debido al cambio EST / EDT:
+ date -d 'Fri Apr 1 00:00:00 EDT 2016 - 1 month'
Mon Feb 29 23:00:00 EST 2016
Sus resultados, por supuesto, variarán de acuerdo con la configuración de su zona horaria local. Activar el seguimiento mostrará la zona horaria (en mi caso, EDT
).
La razón por la cual los resultados difieren es que, en este último caso, le ha dado más información y ha date
hecho que su parámetro sea más específico , es decir, la hora específica del día. En la primera parte, eso no se especificó, dando date
más margen de maniobra sobre cómo determinar la fecha / hora para mostrar.
March