C 로 날짜를 구하는 함수를 만들다 cal 에서 이상한 점을 발견했었습니다.
100년과 1000년은 분명히 윤년이 아닌데, 실행을 해보면,
----------------------
# cal 2 100
February 100
Su Mo Tu We Th Fr Sa
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
----------------------
이렇게 나오는 겁니다. 분명히 버그다! 이렇게 생각을 했었지만.....
그게 아니더군요..아래의 글을 읽어 보세요..
--------------- 아 래 ---------------
현재 사용되고 있는 태양력은 그레고리력인데, 원칙대로라면 제시하신 계산법이 맞
습니다.
다만, 이 방식(400년에 97번의 윤년)은 그레고리력이 적용된 1582년 이후에 해당됩
니다.
그 이전은 율리우스력을 사용해서 그냥 4년마다 1번씩 윤년이 들어갑니다.
따라서 말씀하신 100년과 1000년의 경우는 윤년이 맞습니다. (100년단위 보정이 없
습니다.)
좀더 정확히는 08년부터 4년마다 1번 윤년이 되고, 04년은 윤년이 아닙니다.
따라서,
BC 6 - AD 7년 : 윤년 없음
8년 - 1581년 : 4년마다 윤년 (400년에 100회)
1582년 - : 400년마다 97번의 윤년
또한 그레고리력이 적용된 이후에도 약간의 오류가 있는데
원래는 그레고리력 반포시점인 1582년도에서 3월 11일 - 3월 20일이 없어야 하지만,
실제 국가마다 적용되는데 차이가 있어 이 보정이 이루어지지 않은 달력의 경우는
누적오류를 정정하기 위해 1752년 9월 3일 - 9월 13일이 없습니다.
한편, 현재의 그레고리력은 3000년에 1일정도의 오차가 또 발생합니다.
따라서, 제대로 하려면 3000년마다 다시 한번 윤년보정을 해주어야 하는데,
아직까지는 이 부분에 대한 규정은 없는 것으로 알고 있습니다.
이런 것들 말고도 과거의 역법은, 현재의 달력과는 월별 날짜에 차이가 있어서
정확한 작업을 원하신다면 좀더 상세한 자료를 수집해서 확인하셔야 할 것입니다.
조금이나마 도움이 되기를 바랍니다.
안녕히.
----------------------------------------------------------------------
: 말 그대롭니다. 달력구하는 쉘스크립트입니다.
: 전에 올렸던 것이 넘 느려서 이렇게 다시 올립니다.
:
: 버그 수정을 하는 도중 새로운 사실을 발견했습니다. cal이라는 프로그램 있죠?
:
: 그거 윤년을 고려하지 않습니다. 따라서 그것과 제것을 비교하시고
:
: 잘못됐다고 생각하시면 안됩니다.
:
: 아무쪼록 쉘스크립트 공부하시는 분께 조금이나마 도움이 되었으면 좋겠습니다.
:
: <a href="http://esc.cl.hangkong.ac.kr/~fthing/shellcal.sh"><b>클릭!!</b></a>
:
: 실행방법>
:
: $ ls -l shellcal.sh
: -rw-r--r-- 1 jinjin jinjin 2023 6월 20 18:02 shellcal.sh
: $ chmod 755 shellcal.sh
:
: 실행할 준비가 된상태 이제 실행>
:
: $ ./shellcal.sh 1982 11 # 년도와 달 사이에 공백을 둠.
: ====================
: 1982년 11월
: --------------------
: 일 월 화 수 목 금 토
: --------------------
: 1 2 3 4 5 6
: 7 8 9 10 11 12 13
: 14 15 16 17 18 19 20
: 21 22 23 24 25 26 27
: 28 29 30
: ====================
: $
:
:
: 그럼 이만...
:
: --
: 에공 sed하고 grep은 옵션이 왜케 마노...
:
: 얼렁 알아야 할텐데...--by kimio