Ubuntu 16、20 上的日期计算错误

Ubuntu 16、20 上的日期计算错误

由于您在下面看到的内容,日期计算中发生了最奇怪的事情;请注意,将 10 月 31 日加一个月,就会变成 12 月!这不可能吧?我在 Ubuntu 16 和 20 上也有同样的问题。这个问题也会导致我的 shell 脚本给出错误的日期,所以这不仅仅是 cron 调度程序的问题。

root@ubuntugc:/home/miuser# date -d "20210930+1 month" +%Y-%m-%d
2021-10-30
root@ubuntugc:/home/miuser# date -d "20211030+1 month" +%Y-%m-%d
2021-11-30
root@ubuntugc:/home/miuser# date -d "20211031+1 month" +%Y-%m-%d
2021-12-01

答案1

这就是date工作原理,当添加1 month它时,它只会按月增加,在您的情况下,2021-11-31这是一个不存在的日期,因此它将结果向前移动一天到有效日期(2021-12-01)。从coreutils文档

单位中的模糊可能会导致相关项目出现问题。例如,“2020-07-31 -1 月”的计算结果可能为 2020-07-01,因为 2020-06-31 是无效日期。为了更可靠地确定上个月,您可以询问当月 15 日之前的月份。例如:

相关内容