날짜 명령에 12 월 31 일의 잘못된 주 번호가 표시됨


21

12 월 31 일의 주 번호를 가져 오려고하면 1을 반환합니다. 12 월 30 일의 주 번호를 받으면 52 ---가 표시됩니다. 월요일이 정확합니다. 우분투를 실행하는 RPI에 있습니다.

$ date -d "2018-12-30T1:58:55" +"%V%a"

52Sun

$ date -d "2018-12-31T1:58:55" +"%V%a"

01Mon

시간 문자열이없는 동일한 문제

$ date -d "2018-12-31" +"%V%a"

01Mon

9
"날짜 명령은 12 월 31 일에 잘못된 주 번호를 부여합니다"– "잘못된"사양에 따라? 사용중인 사양이 설명서에서 사용중인 것과 동일한 사양 date입니까?
Jörg W Mittag


2
당신은에 관심이있을 수 MonthCalendar를 제어 루마니아에서 잘못된 주 번호를 보여 않는 이유는 무엇입니까? 블로그 게시물은 Windows에 관한 것이지만 논의되는 문제는 일반적인 것입니다 (그리고 당신이 겪고있는 것과 같은 것 같습니다).
CVn

1
"실수로 실수하지 않았기 때문에 컴퓨터가 틀렸을 것입니다!" 나는 FORTRAN IV 컴파일러가 불평을 때를 생각 나게 한다 처음으로 간단한 프로그램이 있기 때문에, 버그가 수없는 오류가 ...
RonJohn

답변:


49

월요일에 시작되는 ISO 주를 제공합니다.

ISO 주일 시스템은 사실상 1988 년 이후 국제 표준화기구 (ISO)에서 발행 한 ISO 8601 날짜 및 시간 표준의 일부인 실질적인 윤간 달력 시스템입니다 (2004 년 마지막 개정). 1971 년 이래 ISO (R) 2015. 정부와 기업에서 주로 회계 연도 및 시간 관리에 사용됩니다. 이전에는 "산업 날짜 코딩"이라고했습니다. 시스템은 연중 서수에 대한 표기법을 정의하여 그레고리력 달력의 주별 연도를 지정합니다.


ISO 주 번호 매기기 연도 (비공식적으로 ISO 연도라고도 함)에는 52 주 또는 53 주가 있습니다. 일반적인 365 일 또는 366 일 대신 364 일 또는 371 일입니다. ISO 8601에서는이 용어를 사용하지 않지만 여분의 주를 윤간 주라고도합니다.

주는 월요일부터 시작됩니다. 매주 목요일은 목요일이 떨어지는 그레고리력 년입니다. 연중 첫 주에는 항상 1 월 4 일이 포함됩니다. 따라서 ISO 주간 연도 번호 매기기는 1 월 1 일에 가까운 며칠 동안 그레고리오에서 약간 벗어납니다.


52 주차로 12/31을 표시 %U하려면 ISO 표준을 사용하지 않는을 사용해야합니다.

$ date -d "2018-12-31T1:58:55" +"%V%a"
01Mon
$ date -d "2018-12-31T1:58:55" +"%U%a"
52Mon

감사. 그것이 내가 찾던 것입니다. cal 명령에 훨씬 더 복잡한 방법을 사용했습니다.
George Shafer

3

주 번호의 정의는 유럽과 미국에서 다르며 아마도 ISO와 ANSI 표준이 다릅니다. 이것은 일요일-토요일 또는 월요일-일요일 주일과 관련이있을 수 있으며, 다시 주일에 대한 유대인 대 기독교 정의 (안식일 대 일요일)와 관련 될 수 있습니다.

유럽의 경우 1 주차에는 1 월 첫 번째 목요일이 포함되므로 새해 (목-금-토-일)에 속하는 최소 4 일 (즉, 대다수)이 포함됩니다.

어쨌든, 유럽과 미국의 ALL (!!) 주 번호가 +/- 1과 다른 해에는 다국적 기업의 일정 설정에 큰 즐거움을줍니다. :-)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.