Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在unix中获取上个月的最后一天_Unix_Date - Fatal编程技术网

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

如何在unix中获取上个月的最后一天,unix,date,Unix,Date,我需要知道上个月的最后日期 今天最后一个月的最后一天是4月30日。我的评论日期-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 参考资料:如果您有gnu日期,则此选项应

我需要知道上个月的最后日期


今天最后一个月的最后一天是4月30日。

我的评论
日期-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

参考资料:

如果您有gnu日期,则此选项应该有效:

1 day ago <month> 1
另一个示例是查找7月前一个月的最后一天:

kent$  date -d'1 day ago july 1'
Sun Jun 30 00:00:00 CEST 2013
注意,对于KSH/BASH,时间戳被设置为
00:00:00

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
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.
它的意思是“显示当前月1日减去1天的日期”

编辑:

对于MacOS,args有点不同

date -v-1d +%Y-%m-%d

date-d'last month'
?因为今天是30号=上个月的最后一天,所以不知道它是否正确。你可以检查感谢工作…@fedorqui+1我总是从你的答案中学到很多。那么“日期-d”-1天1$(日期+%b)“`如何使其更具一般性?其中
%b
输出五月/四月…谢谢@fedorqui。是的,你可以说通过另一次约会的结果更“一般”。的确,您保存了当前月份的输入。但我们失去了在不同月份作为参数传递的可能性。e、 我的第二个例子。无论如何,这取决于我们想要得到什么。在Solaris中,必须用nawk替换awk以使其工作:cal${m}${y}| nawk'NF{A=$NF}END{print A}
date -d "$(date +%Y-%m-01) -1 day"
date -v-1d +%Y-%m-%d