返回一个月的最后一天

时间:2015-03-25 12:39:27

标签: bash shell unix scripting

我正在尝试返回MONTHNO变量中指定月份的月份的最后一天。

因此,当MONTHNO指出二月为例时,鉴于我们四月份YYYYMMDD应该返回20150228

MONTHNO=`date -d "2 month ago" "+%m"`
YEAR=`date +%Y`
YYYYMMDD=`date +%Y%m%d`

由于

1 个答案:

答案 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

当然,my变量可以合并,为您节省一步:

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")