【发布时间】:2015-03-25 12:39:26
【问题描述】:
我正在尝试返回在我的 MONTHNO 变量中指定的月份的最后一天。
例如,当 MONTHNO 指向 2 月时,假设我们在 4 月,YYYYMMDD 应该返回 20150228
MONTHNO=`date -d "2 month ago" "+%m"`
YEAR=`date +%Y`
YYYYMMDD=`date +%Y%m%d`
谢谢
【问题讨论】:
我正在尝试返回在我的 MONTHNO 变量中指定的月份的最后一天。
例如,当 MONTHNO 指向 2 月时,假设我们在 4 月,YYYYMMDD 应该返回 20150228
MONTHNO=`date -d "2 month ago" "+%m"`
YEAR=`date +%Y`
YYYYMMDD=`date +%Y%m%d`
谢谢
【问题讨论】:
您只需几步即可到达。这里的诀窍是在您感兴趣的那一天之后回到月初,然后再回到一天:
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")
因为我们目前是在 3 月,所以结果如下:
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")
【讨论】: