$ date -d "Apr 1 2016 - 1 month" +%B
me dá "março", o que é ótimo - o mês que antecede abril é março. Se eu fizer isso no entanto:
$ date -d "$(date -d "Apr 1 2016") - 1 month" +%B
isso me dá "fevereiro". Isso está causando um bug em algum código mais complexo que eu tenho. Por que esses 2 comandos mostram resultados diferentes?
March
Respostas:
Você pode ver o problema ativando o rastreamento de shell:
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: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, dandodate
mais margem de manobra sobre como determinar a data / hora a ser exibida.fonte
date -d "Apr 1 2016"; date -d "$(date -d "Apr 1 2016")"
obtenho exatamente o mesmo resultado, incluindo a mesma marca de fuso horário - por que a remoção de um mês de ambos resulta em resultados diferentes?