Shell Date命令返回今天的同一个月';s日期加上一两个月

Shell Date命令返回今天的同一个月';s日期加上一两个月,shell,Shell,今天是2016年1月31日。当我使用 date -d 'next month' +"%d" 我希望它返回02,我得到了02。但请注意: [/bazar]$date +"%Y%m%d" 20160131 [/bazar]$date -d '+1 month' +"%Y%m" 201603 [/home/bazar]$date -d '+2 month' +"%Y%m" 201603 [/home/bazar]$date -d '+3 month' +"%Y%m" 201605 为什么+1个月和

今天是2016年1月31日。当我使用

date -d 'next month' +"%d"
我希望它返回
02
,我得到了
02
。但请注意:

[/bazar]$date +"%Y%m%d"
20160131
[/bazar]$date -d '+1 month' +"%Y%m"
201603
[/home/bazar]$date -d '+2 month' +"%Y%m"
201603
[/home/bazar]$date -d '+3 month' +"%Y%m"
201605

为什么
+1个月
+2个月
都返回
201603

日期从字面上理解您的请求,并尝试使用2月31日的日期(因为您给出的日期是1月31日),但由于该日期不存在,它会移动到下一个月,因此会返回03(+1个月)

那么您得到了预期的输出,到底是什么问题?请编辑您的问题以明确指出问题。你期望的产出是什么?您收到了什么输出?我想问题应该是
预期输出02,实际上我得到了03
。我在我的系统上进行了本地测试,结果相同。有点意外,找不到有关此行为的合理文档。没错,感谢uUse
%Y%m%d
提供了所有命令,并查看它打印的内容。date-d'+1个月'+%Y%m%d'------------->20160302at 20160201执行
date-d'-1个月'+%Y%m%d'
输出20160101,对吗?