我使用下面的方法获得Ubuntu 11.04下的上个月、当前月和下个月:

LAST_MONTH=`date +'%m' -d 'last month'`
NEXT_MONTH=`date +'%m' -d 'next month'`
THIS_MONTH=`date +'%m' -d 'now'`

直到今天,也就是2012年10月的最后一天(2012-10-31),它一直运行良好

截至目前,我得到以下结果:

$ date
Wed Oct 31 15:35:26 PDT 2012
$ date +'%m' -d 'last month'
10
$ date +'%m' -d 'now'
10
$ $ date +'%m' -d 'next month'
12

我想输出应该分别是91011.

我不明白为什么date个输出会这样.什么样的好方法可以让previouscurrentnext个月保持一致?

推荐答案

问题是,date完全按照字面意思接受你的请求,并try 使用9月31日的日期(即10月31日减go 一个月),然后因为不存在该日期,它会移动到第二天.date份文件(来自info date份)有以下建议:

单位中的模糊可能会导致相关项目出现问题.对于

 $ date -R
 Thu, 31 Jul 2003 13:02:39 -0700
 $ date --date='-1 month' +'Last month was %B?'
 Last month was July?
 $ date --date="$(date +%Y-%m-15) -1 month" +'Last month was %B!'
 Last month was June!

Linux相关问答推荐

为什么硬编码的阿拉伯字母与Unicode代码点不具有相同的值

在 Linux 中屏蔽文件中的位 - 按位运算

有必要注意非错误提示吗?好像没有找到包裹‘***’?

读取命令停止执行 bash 脚本

文件未在脚本中使用 cp 命令复制到 Docker 容器中

如何使用awk或其他方法提取双引号中的子字符串?

查找更高版本的文件

try 使用 patchelf 修补 MuJoCo 二进制文件时出现执行格式错误

普通用户 chown(仅更改组)

如何在 Linux 上捕获原始 HID 输入?

在 Linux 下将 TCP 流量重定向到 UNIX 域套接字

具体来说,fork() 如何处理 Linux 中 malloc() 动态分配的内存?

无法创建Java虚拟机

-zxvf 在 tar -zxvf <文件名> 中是什么意思?

仅在不存在时添加换行符

grep 时间命令输出

php.ini 更改,但在 Ubuntu 上无效

如何让 GNU 屏幕读取 .bash_profile/.bash_rc 更改?

是否有git sed或类似功能?

在类 Unix 系统中上次运行的 cron 作业(job)的详细信息?