"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

주는 두 가지 유형이 있습니다.

  • 월요일을 첫날로
  • 일요일이 첫날이에요

따라서 다른 요일에 있을 때(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 요일 날짜

관련 정보