无论天数如何,获取上个月

had*_*des 5 linux date

在 Linux 中,我可以通过使用上个月获得

date -d "last month" '+%Y%m'
Run Code Online (Sandbox Code Playgroud)

或者

date -d "1 month ago" '+%Y%m'
Run Code Online (Sandbox Code Playgroud)

但是说,今天是 3 月 31 日,如果我在顶部运行命令,它会显示 201603,但是无论我现在在哪一天,我都想得到上个月;我该怎么做?

我可以通过使用像获取上个月的第一天/最后一天这样的解决方法来实现这一点,但我想知道有没有什么优雅的方法可以做到这一点?

 date -d "-$(date +%d) days" '+%Y%m'     #get last day of previous month
Run Code Online (Sandbox Code Playgroud)

小智 11

通常的智慧是使用本月的 15 号。然后减去1个月:

$ nowmonth=$(date +%Y-%m)
$ date -d "$nowmonth-15 last month" '+%Y%m'
201602
Run Code Online (Sandbox Code Playgroud)