【问题标题】:Bash - date: difference between %V and %WBash - 日期:%V 和 %W 之间的差异
【发布时间】:2017-11-30 09:38:21
【问题描述】:

我想使用 bash 获取周数。

date 的 man 条目显示以下内容:

%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

【问题讨论】:

  • 我投票决定将此问题作为题外话结束,因为“正确”的答案实际上是在维基百科上寻找“ISO 周数”时给出的......

标签: date gnu-coreutils


【解决方案1】:

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

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

'%W' 一年中的第几周,星期一为一周的第一天('00'...'53')。新年中第一个星期一之前的日子是在第 0 周。

‘%V’ ISO 周数,即一年中的周数,星期一为一周的第一天(‘01’…‘53’)。如果包含 1 月 1 日的那一周在新年中有 4 天或更多天,则将其视为第 1 周;否则为上一年的第 53 周,下周为第 1 周。(参见 ISO 8601 标准。)

【讨论】:

    【解决方案2】:

    这似乎取决于年份。我喜欢 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
    $
    

    【讨论】:

      【解决方案3】:

      我会说那里有一个错字:

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

      最好的问候

      【讨论】:

      • 您系统中的日期错误。想想你自己,你说的是 52 周,还剩 1 个月。 :p
      • 为什么要添加一个推测性的答案,即使是很小的研究也表明情况并非如此?
      • @123 你说得对,在回答之前我应该​​多了解一下日历:)
      猜你喜欢
      • 2021-03-22
      • 2011-02-01
      • 2014-04-05
      • 1970-01-01
      • 1970-01-01
      • 2012-02-04
      • 2014-04-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多