Answers:
您可以通过打开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
当您使用内部date
命令的输出时,它是在四月的开始,并且由于EST / EDT的变化,当减去一个月会导致中断:
+ date -d 'Fri Apr 1 00:00:00 EDT 2016 - 1 month'
Mon Feb 29 23:00:00 EST 2016
当然,您的结果会因您当地的时区设置而异。打开跟踪将显示时区(在我的情况下为EDT
)。
结果不同的原因是,在后一种情况下,您已向提供了更多信息date
,使其参数更具体,即一天中的特定时间。在第一部分中,没有指定,这date
为如何确定显示的日期/时间提供了更多的空间。
date -d "Apr 1 2016"; date -d "$(date -d "Apr 1 2016")"
,我将得到完全相同的结果,包括相同的时区标记-为什么要从两个结果中减去一个月却得出不同的结果?
March