date(1)のマニュアルページには次のように書かれています:
%W 月曜日を週の初日とする年内の週番号 (00..53)
週番号 00 が存在すると想定し、プログラムでそのような週を処理しましたが、テストしてみると、
「date -v -28w +%W」を実行すると 01 になり、
「date -v -29w +%W」を実行すると 52 になります。
ある年が週 00 になる可能性はありますか、それともここでは何が起きているのでしょうか? おそらく私が何かを見逃しているのでしょう、ありがとうございます。
答え1
1 年の最初の月曜日の前の日は、週 00 になります。たとえば、2020 年 1 月 1 日は水曜日でした (2020 年の最初の月曜日は 1 月 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
同様に、月曜日に始まる年では、12 月には 53 週目に該当する日がいくつかあります。2018 年はそのような年でした。
$ date -d "2018-12-31" +%W
53