4

我有要求获得上个月的最后一个日期。

今天最后几个月的最后一天是30(四月)。

4

5 回答 5

6

如果您有 gnu 日期,这应该可以工作:

1 day ago <month> 1

<month>这是当前月份,例如

kent$  date -d'1 day ago may 1' 
Tue Apr 30 00:00:00 CEST 2013

另一个例子,查找 7 月前一个月的最后一天:

kent$  date -d'1 day ago july 1'
Sun Jun 30 00:00:00 CEST 2013

请注意,时间戳设置为00:00:00.

于 2013-05-30T12:29:55.620 回答
2

我的评论date -d 'last month'是错误的。

这有效:

date -d "-$(date +%d) days -0 month"

测试

刚刚更改了我的日期以通过这种方式进行测试:

$ date
Web May 29 14:06:36 CEST 2013
$ date -d "-$(date +%d) days -0 month"
Tue Apr 30 14:06:36 CEST 2013

参考:http ://databobjr.blogspot.nl/2011/06/get-first-and-last-day-of-month-in-bash.html

于 2013-05-30T12:08:05.413 回答
2

对于 KSH/BASH

y=$(date '+%Y') # Get current year
m=$(date '+%m') # Get current month
((m--))         # Decrement month
[[ ${m} == 0 ]] && ((y--)) # If month zero, decrement year
[[ ${m} == 0 ]] && m=12    # If month zero, reset to 12

cal ${m} ${y} | awk 'NF{A=$NF}END{print A}'  
# Run cal, and print the last field of the last line with fields.
于 2018-12-20T20:19:24.253 回答
0
m=`date +%m`
set -A mth Dec Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
prevmth=${mth[$((m - 1))]}


echo $prevmth
于 2013-10-03T12:14:27.070 回答
0
date -d "$(date +%Y-%m-01) -1 day"

它的意思是“告诉我当月 1 日减去 1 天的日期”

编辑:

对于 MacOS,args 有点不同

date -v-1d +%Y-%m-%d
于 2019-04-05T22:25:07.610 回答