Ubuntu 16、20 上的日期計算錯誤

Ubuntu 16、20 上的日期計算錯誤

由於您在下面看到的內容,日期計算中發生了最奇怪的事情;請注意,在 10 月 31 日基礎上加一個月,就會變成 12 月!這不可能吧?我在 Ubuntu 16 和 20 上也有同樣的問題。

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 日之前的月份。例如:

相關內容