我一直在使用命令:
date --date='1 months ago' +%b
要获取一个月前的月份名称,但今天已经意识到这个命令实际上给了我4个星期前的月份名称。
有没有办法获得1个月前的日历月,或者确实是n个月前,因为我可以看到随着月数的增加,差异会更大。
答案 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`