我要求获取上个月的最后日期。
今天最后几个月是30(4月)。
答案 0 :(得分: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
。
答案 1 :(得分: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
答案 2 :(得分:1)
对于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.
答案 3 :(得分: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
答案 4 :(得分:0)
date -d "$(date +%Y-%m-01) -1 day"
它的意思是“告诉我当前月1日减去1天的日期”
编辑:
对于MacOS,args有所不同
date -v-1d +%Y-%m-%d