Команда «date +%W» не возвращает неделю 00

Команда «date +%W» не возвращает неделю 00

На странице руководства для date(1) указано:
%W номер недели в году, где понедельник — первый день недели (00..53)

Я предполагал, что существует неделя с номером 00, и я обрабатываю такую ​​неделю в своей программе, но как только я решил ее протестировать, выполнение
«date -v -28w +%W» дало результат 01, а
«date -v -29w +%W» дало результат 52.

Возможно ли, что в каком-то году будет неделя 00, или что тут происходит? Возможно, я что-то упускаю, спасибо.

решение1

Любой день года до первого понедельника будет неделей 00. Возьмем, к примеру, 1 января 2020 года, который был средой (первый понедельник 2020 года наступил только 6 января):

$ 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

Аналогично, для годов, начинающихся с понедельника, в декабре будут некоторые дни, попадающие на 53-ю неделю. 2018 год был таким годом:

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

Связанный контент