「date」コマンドを使用して年の週を表示するには?

「date」コマンドを使用して年の週を表示するには?

UNIX出力が必要ですdate

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

与える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

dateコマンドには実際に3つの週番号があります。

  • %U 1年の週数、日曜日は週の最初の日です(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曜日の日付

関連情報