【问题标题】:Returning the last day of a month返回一个月的最后一天
【发布时间】: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`

谢谢

【问题讨论】:

    标签: bash shell unix scripting


    【解决方案1】:

    您只需几步即可到达。这里的诀窍是在您感兴趣的那一天之后回到月初,然后再回到一天:

    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
    

    当然,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")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-17
      • 1970-01-01
      • 2013-07-27
      • 1970-01-01
      • 1970-01-01
      • 2021-12-24
      相关资源
      最近更新 更多