Befehl 'date +%W' gibt nicht Woche 00 zurück

Befehl 'date +%W' gibt nicht Woche 00 zurück

Die Manualpage für date(1) sagt:
%W Wochennummer des Jahres, mit Montag als erstem Wochentag (00..53)

Ich ging davon aus, dass es eine Woche mit der Nummer 00 gibt, und verarbeite eine solche Woche in meinem Programm. Als ich mich jedoch dazu entschloss, es zu testen, ergab die Ausführung von
„date -v -28w +%W“ 01 und
„date -v -29w +%W“ 52.

Ist es möglich, dass manche Jahre Woche 00 haben, oder was ist hier los? Wahrscheinlich übersehe ich etwas, danke.

Antwort1

Jeder Tag des Jahres vor dem ersten Montag ist Woche 00. Nehmen wir zum Beispiel den 1. Januar 2020, der ein Mittwoch war (der erste Montag des Jahres 2020 war erst der 6. Januar):

$ date -d "2020-01-01" +%W
00
$ date -d "2020-01-02" +%W
00
$ date -d "2020-01-03" +%W
00
$ date -d "2020-01-04" +%W
00
$ date -d "2020-01-05" +%W
00
$ date -d "2020-01-06" +%W
01

Ebenso gibt es in Jahren, die an einem Montag beginnen, einige Tage im Dezember, die in die Kalenderwoche 53 fallen. 2018 war ein solches Jahr:

$ date -d "2018-12-31" +%W
53

verwandte Informationen