Você pode ver o problema ativando o rastreamento 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
Quando você usa a saída do date
comando interno , é no início de abril e, ao subtrair um mês, a descontinuidade ocorre devido à alteração do EST / EDT:
+ date -d 'Fri Apr 1 00:00:00 EDT 2016 - 1 month'
Mon Feb 29 23:00:00 EST 2016
Seus resultados, é claro, variarão de acordo com as configurações de fuso horário local. Ativar o rastreamento mostrará o fuso horário (no meu caso EDT
).
A razão pela qual os resultados diferem é que, no último caso, você forneceu mais informações date
e tornou seu parâmetro mais específico , ou seja, a hora específica do dia. Na primeira parte, isso não foi especificado, dando date
mais margem de manobra sobre como determinar a data / hora a ser exibida.
March