如何使用“date”命令显示一年中的第几周?

如何使用“date”命令显示一年中的第几周?

我希望 UNIXdate输出:

So this is week 35 of 2016.

当然,这里的 35 和 2016 是 date 命令的输出。我已经尝试过以下方法:

date +%U

这会打印出当前周数。但我必须将其包装在我想要显示的特定文本中。我试过:

date "So this is week: %U"
date "It is currently: "+ "%U"

两者都给了我一个错误。如何使该date命令以我想要的特定格式向我显示周数?

答案1

整个格式字符串前面应带有+

$ date +"So this is week: %U"
So this is week: 19
$ date +"So this is week: %U of %Y"
So this is week: 19 of 2016

答案2

一周有两种:

  • 星期一作为第一天
  • 周日为第一天

所以当你在一周中的不同日子时,它并不完全相同(CentOS7):

[[email protected]:~]# date
Mon Aug 26 18:02:47 CST 2019

[[email protected]:~]# date +%U
34

[[email protected]:~]# date +%V
35
date --help
  %U   week number of year, with Sunday as first day of week (00..53)  
  %V   ISO week number, with Monday as first day of week (01..53)

答案3

日期命令实际上有 3 种一年中的周数:

  • %U 一年中的周数,星期日为一周的第一天 (00..53)
  • %W 一年中的周数,星期一为一周的第一天 (00..53)
  • %V ISO 周数,星期一为一周的第一天 (01..53)

答案4

不要将日历周/年与 ISO 周/ISO 年搞混!例如解决方案

echo "So this is week `date +%V` of `date +%Y`."

是不正确的!,因为例如对于 1.1.2023 它将返回无意义的内容:

> date -d "2023/01/01" +"%F is week %V year %Y"
2023-01-01 is week 52 year 2023

仅对 ISO 日历使用 +%V +%G,或对普通日历使用 +%W/%U +%Y:

> date -d "2023/01/01" +"%F is week %V year %G"
2023-01-01 is week 52 year 2022
> date -d "2023/01/01" +"%F is week %W year %Y"
2023-01-01 is week 00 year 2023

更多信息请参见维基百科:ISO 星期日期

相关内容