日期(1)的手册页显示:
%W 一年中的周数,星期一为第一天(00..53)
我假设存在一个周数 00,并且我在我的程序中处理这样的周,但是一旦我决定测试它,执行
“date -v -28w + %W”的结果为 01,而
“date -v -29w + %W”的结果为 52。
是否有可能在某一年得到第 00 周,或者这里发生了什么?可能我遗漏了一些东西,谢谢。
答案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