![如何使用“date”命令显示一年中的第几周?](https://linux22.com/image/88126/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E2%80%9Cdate%E2%80%9D%E5%91%BD%E4%BB%A4%E6%98%BE%E7%A4%BA%E4%B8%80%E5%B9%B4%E4%B8%AD%E7%9A%84%E7%AC%AC%E5%87%A0%E5%91%A8%EF%BC%9F.png)
我希望 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 星期日期