我正在尝试返回MONTHNO变量中指定月份的月份的最后一天。
因此,当MONTHNO指出二月为例时,鉴于我们四月份YYYYMMDD应该返回20150228
MONTHNO=`date -d "2 month ago" "+%m"`
YEAR=`date +%Y`
YYYYMMDD=`date +%Y%m%d`
由于
答案 0 :(得分:5)
你可以通过几个步骤到达那里。这里的诀窍是在你感兴趣的那个之后去那个月的,然后回去一天:
m=$(date -d "1 month ago" "+%m")
y=$(date "+%Y")
temp=$(date -d "${y}${m}01")
d=$(date -d "$temp - 1 day" "+%Y%m%d")
正如我们目前在三月份,这给出了结果:
20150131
当然,m
和y
变量可以合并,为您节省一步:
ym=$(date -d "1 month ago" "+%Y%m")
temp=$(date -d "${ym}01")
您甚至可以将调用嵌套到date
(尽管可能以牺牲易读性为代价)来执行此操作,然后执行此操作"一步":
d=$(date -d "$(date -d "$(date -d "1 month ago" "+%Y%m" )01") - 1 day" "+%Y%m%d")