Ubuntu 16、20の日付計算エラー

Ubuntu 16、20の日付計算エラー

以下に示すように、日付計算で最も奇妙なことが起こります。 10月31日に月を加えると12月になります。これは不可能ではありませんか? Ubuntu 16と20でも同じ問題があります。この問題はシェルスクリプトが間違った日付を提供するので、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 -January」は2020-07-01と計算できます。 2020-06-31 は無効な日付だからです。前月をより確実に確認するには、今月15日前の月をリクエストできます。たとえば、

関連情報