我有要求获得上个月的最后一个日期。
今天最后几个月的最后一天是30(四月)。
如果您有 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
.
我的评论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
对于 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.
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
date -d "$(date +%Y-%m-01) -1 day"
它的意思是“告诉我当月 1 日减去 1 天的日期”
编辑:
对于 MacOS,args 有点不同
date -v-1d +%Y-%m-%d