Bash - 日期:%V和%W之间的差异

时间:2017-11-30 09:38:22

标签: date gnu-coreutils

我想用bash获取周数。

date的人员条目显示以下内容:

%V     ISO week number, with Monday as first day of week (01..53)
%W     week number of year, with Monday as first day of week (00..53)

有什么区别?

这是我得到的输出:

$ date "+%W"
48
$ date "+%V"
48

3 个答案:

答案 0 :(得分:0)

在GNU文档中更清楚一点(在手册页中引用):

https://www.gnu.org/software/coreutils/manual/html_node/Date-conversion-specifiers.html#Date-conversion-specifiers

  

'%W'周数,周一为周的第一天('00'...'53')。第一个星期一之前的新年中的天数为零周。

     

'%V'ISO周数,即一周的周数,周一为一周的第一天('01'...'53')。如果包含1月1日的一周在新的一年中有四天或更多天,那么它被认为是第1周;否则,它是上一年的第53周,下一周是第1周。(参见ISO 8601标准。)

答案 1 :(得分:0)

似乎取决于年份。我喜欢JoseKilo的解释。

$ date +%V
32
$ date +%W
31
$ date
Mon Aug  5 08:29:23 MDT 2019
$

$ date -v-2y +%W
31
$ date -v-2y +%V
31
$ date -v-2y
Sat Aug  5 08:29:22 MDT 2017
$

答案 2 :(得分:-1)

我想说那里有一个错字:

 $ date "+%W"
52
 $ date "+%V"
52
 $ date
Sat Dec 30 10:42:06 CET 2017

祝你好运