Falsche Datumsberechnung nach Datum unter Ubuntu 16, 20

Falsche Datumsberechnung nach Datum unter Ubuntu 16, 20

Das Seltsamste passiert bei der Datumsberechnung aufgrund dessen, was Sie unten sehen: Beachten Sie, dass das Hinzufügen eines Monats zum 31. Oktober Dezember ergibt! Das kann nicht sein? Ich habe das gleiche Problem unter Ubuntu 16 und 20. Dieses Problem führt auch dazu, dass mein Shell-Skript das falsche Datum angibt, es liegt also nicht nur am Cron-Scheduler.

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

Antwort1

So datefunktioniert es: Beim Hinzufügen 1 monthwird der Monat einfach um eins erhöht, 2021-11-31was in Ihrem Fall ein Datum ist, das nicht existiert, sodass das Ergebnis einen Tag nach vorne auf ein gültiges Datum ( 2021-12-01) verschoben wird. VonCoreutils-Dokumentation:

Die Unschärfe in Einheiten kann bei relativen Elementen zu Problemen führen. Beispielsweise könnte „2020-07-31 -1 Monat“ als 2020-07-01 ausgewertet werden, da 2020-06-31 ein ungültiges Datum ist. Um den vorherigen Monat zuverlässiger zu bestimmen, können Sie nach dem Monat vor dem 15. des aktuellen Monats fragen. Beispiel:

verwandte Informationen