如何在unix中获得上个月的最后一天

时间:2013-05-30 11:38:03

标签: unix date

我要求获取上个月的最后日期。

今天最后几个月是30(4月)。

5 个答案:

答案 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