如何在bash中获得一个月前的月份?

时间:2014-07-31 15:19:25

标签: bash date

我一直在使用命令:

date --date='1 months ago' +%b

要获取一个月前的月份名称,但今天已经意识到这个命令实际上给了我4个星期前的月份名称。

有没有办法获得1个月前的日历月,或者确实是n个月前,因为我可以看到随着月数的增加,差异会更大。

3 个答案:

答案 0 :(得分:0)

依赖于当月天数的日期计算非常棘手。使用月份数和查找表的混合方法可能效果最好。

months=("" Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)
echo ${months[$(date +%m) - 1 ]}

答案 1 :(得分:0)

[[ $(date +%d) == "31" ]] && date -d'-31 day' +%b || date -d'-1 month' +%b

今天测试:

kent$ date
Thu Jul 31 17:34:27 CEST 2014

kent$ [[ $(date +%d) == "31" ]] && date -d'-31 day' +%b || date -d'-1 month' +%b
Jun

答案 2 :(得分:0)

尝试这一行

#if the month before 30 days is the same of the actual month ,then return the month before 31 days

[[ `date --date='30 day ago' +%b` == `date +%b` ]] && echo `date --date='31 day ago' +%b` || echo `date --date='30 day ago' +%b`