diff --git "a/doc/24\354\240\210\352\270\260 \352\263\204\354\202\260\353\260\251\353\262\225.txt" "b/doc/24\354\240\210\352\270\260 \352\263\204\354\202\260\353\260\251\353\262\225.txt" deleted file mode 100644 index ffdc92c..0000000 --- "a/doc/24\354\240\210\352\270\260 \352\263\204\354\202\260\353\260\251\353\262\225.txt" +++ /dev/null @@ -1,71 +0,0 @@ - - - - 고영창 (fftkrr ) -24절기의 계산방법.. 1998-11-29 16:03 63 line - -24절기의 계산방법 - -이 절기의 계산법은 원래는 태양황경을 계산해서 구해야 하지만 -황경은 아예무시해버리고 독창적인 방법을 사용했습니다. - -절기는 1태양년에 정확히 일치하는것이니까, -1태양년의 길이를 525949분(=365일 5시간 49분)으로 맞추고 제 프로그램의 -유효기간 전부에서 일정하게 사용했습니다. -(당연히 曆表時는 고려가 안되었죠. 그러니 실제 1태양년보다 약 15초정도 깁니다) -이 오차에 대한 내용은 맨 아래에서 다시 언급하죠. - -그런후에 최근 10여년간 역서에 나온 절기시간을 분석해서 평균을 내었습니다. -입춘시점을 한해의 시작점으로 하여 0으로 잡고,각절기까지의 평균을 구했더니 -다음과 같더군요..(24절기모두 표준편차 5분이내입니다) - - ('입춘','우수','경칩','춘분','청명','곡우','입하','소만', - '망종','하지','소서','대서','입추','처서','백로','추분', - '한로','상강','입동','소설','대설','동지','소한','대한','입춘'); - = - (0,21355,42843,64498,86335,108366,130578,152958, - 175471,198077,220728,243370,265955,288432,310767,332928, - 354903,376685,398290,419736,441060,462295,483493,504693,525949); - -이 값들을 이용해서 1996년입춘부터 구하려는 특정년까지의 년수에 -525949(=1년)을 곱해서 1996년입춘부터 해당년의 입춘까지의 시간(분)을 구한뒤에 -그 분을 1440분(=1일)으로 나누어서 일수를 구하고, 이렇게 해서 해당년의 입춘의 -날짜를 구합니다. - -그다음 그해의 입춘을 기점으로 위 절기까지의 분에 따라 그 해의 각각의 절기를 -구합니다. - -무지 쉽죠? - -대략의 알고리즘은 이와 같고, 이 알고리즘을 구현해서 프로그래밍을 하였구요. -프로그래밍은 별로 어렵지 않았습니다. - - - -오차에 대해서 잠깐 언급하면요. - -사마천의 '사기'에 있는 역서관련부분에보면 -BC104년의 동지입기시간이 자시였다는 기록이 나옵니다. -이 BC104(혹은 BC103년)은 중국과 한국의 역법에서 아주 중요한 위치를 가집니다. -그 이유는 그 해의 동지가 甲子일이었고, 동지 입기시간이 甲子시였기 때문이죠. -또 이 동지입기시간이 달의 합삭시간과 일치했다고 합니다. -그러니 당연히 중국과 한국에서 사용되었던 모든 역법의 기준점이 됩니다. -이와 관련된 내용은 나중에 기회가 있을때 다시 언급하죠. - -제가 1년을 15초 길게 계산해서 구한 BC104년의 동지 입기시간이 정확하게 -자정이었습니다. 이 얘기는 BC104년부터 1996년까지의 1년의 평균길이가 -525949분이라는 얘기죠. 그러니 역표시가 맞다면 지금은 1년의 길이가 -525949분에서 15초가량 짧지만 BC104년 무렵에는 525949분에서 15초가량 길었다는 -얘기구요, 역표시가 틀리다면 1년의 길이는 그냥 525949분이라는 이야기입니다. -만약 역표시가 틀리다면.. 저는 노벨상감이죠.. 헤헤.. - -이렇게 해서 계산에 의한값과 기록이 일치하니 대충 맞는가보다 생각중이죠. - -이게 제가 절기 계산을 한 방법입니다. - -진짜만세력은 델파이로 만들었는데, 소스라인이 약 1600라인정도입니다. - -이상입니다. - - - PRINTER/CAPTURE를 OFF 하시고 [ENTER] 를 누르십시오. diff --git a/doc/cal20000.txt b/doc/cal20000.txt deleted file mode 100644 index 52f3bd4..0000000 --- a/doc/cal20000.txt +++ /dev/null @@ -1,209 +0,0 @@ -¥ V0.93ȳ - -http://afnmp3.homeip.net/~kohyc/calendar/index.cgi -http://afnmp3.homeip.net:81/~kohyc/calendar/index.cgi - -***** - - ð ջð ϰ Ͽ Դϴ. -ȿⰣ -10000 10000 ⰣԴϴ. -ǥù ׷±, Ѵ޴ ǥϸ, ȿⰣ -׷¸ ,³¥,ϽĿ,24Ⱑ ǥմϴ. -, ش糯ڸ 콺 Ŭϸ ׳ ,,28,,¿ -,/, شϿ , ߱, ̷ Աð - ջð,ð Ȳ鱳 ش ¾ Ȳ̰ ǥõ˴ϴ. - -Ʒ ȿⰣ (-10000~10000) Ǵ -Դϴ. - - α׷ Ʈ Ӱ ֽϴ. - - -***** ȳ - -0.91 : ʹ - - -0.92 : 24ð , Ͻ߰, óӵ - - - 24Աð ִ 2ð ִ 20 . - - Ͻİ ߰. - - 0.91 (1996)κ ־ ӵ - ӵ ȹ . - - -0.93 : ȿⰣ ( ) ߰ - - - ȿⰣ -2085 6077⿡ -10000 10000 Ȯ - Ȯ 64Ʈ ؼ ϴ. - -10000 Ž ð մϴ. - , 10000 ̷ ð ⵵ Ŀ - ϴ. - - (º)ð ߰Ǿϴ. - ̿ Բ ش Ŀε ߰Ǿϴ. - ջð ð Ҽ 2ڸ Ǽ Ȳ鱳 ش - ¾ Ȳ ̷ -90~+90 Դϴ. - - - -***** ݵ ˾ƾ ***** - -- Ʒ ϰ » ϰ ٸ -ֽϴ. ¥ ¥ 꿡 Ͽ մϴ. -/ ٸ ִٴ° ϰ Ͻñ ٶϴ. - ٸ ¥ ߿ Ư Ϸ翡 ̿ ̿ -Ͽ ݵ ˰ Ͻʽÿ. - -- (BC)꿡 0 ؼ Ͽ մϴ. - BC 0 , BC 1 ش AD 1Դϴ. - ¥ бü踦 ؼ AD1 ٷ⵵ 0Դϴ. -0 ⵵ -1Դϴ. BC  ⵵ ޷ Ѵٸ -ش ⵵ 1 ؾ մϴ. BC 5 ޷ Ѵٸ -⵵ Էºκп -4 Էؾ մϴ. - -- ¥ ǥ ׷Դϴ. ׷ (1583) - ¥ǥ 콺 ׷ ȯϰų, ׷ 콺 - ȯϷ ǥ ־ մϴ. - - -A.D 4 3 -2 900 3 5 - 100 3 -1 1000 3 6 - 200 3 0 1100 3 7 - 300 3 1 1300 3 8 - 500 3 2 1400 3 9 - 600 3 3 1500 3 10 - 700 3 4 1583 3 ׷ -( ǥ м 37 ǥԴϴ.) - - A.D. 4 콺 θȲ鶧 ¥ Դϴ. - A.D. 4 콺 A.D. 4 콺° ȣȯ -ʽϴ. A.D.4 ¥ A.D.4 콺° -ȣȯǴ ü ǥմϴ. ׷Ƿ A.D.4 ¥꿡 A.D 4 -2Ͽ -100⿡ Ϸ羿 ߰ؼ ָ ˴ϴ. - - -* Ϸ - - Ŵ Ϸ ջðԴϴ. ջð 0 ֺ - Ϸ簡 ϰ ٸ ֽϴ. - ̷ Ϸ ð ġ Ͽ - Ͽ ϰ Ϸ縦 Ͽ մϴ. - ̹ ð, ̹ Ǿ - ȱ ߸Ǿٰ Ҽ ϴ. - в ջð 0 ֺ ϰ - ¥ ٸ ִٴ° ݵ ˰ Ͻñ ٶϴ. - ( ¥ ְ, Ʋ ֽϴ. - ڼ Ͻʽÿ..) - Ϸ ¥ Ʋ ޳ ڰ Ϸ羿 иϴ. - ̳ ¥ Դϴ. - -* - - Ϸ 24 ߱⿡ Ͽ ˴ϴ. - Ϸ ¥ ߱ ¥ ġ ̵ɼ - ֽϴ. - ̷ ٽ Ͽ ؾ - մϴ. ̹ ǾǷ Ҽ ϴ. -  ¥» ޷ ǥõȴٸ, °ų - ( ϰų),  3 ̳ մϴ. -  ڷῡ ǥõ ¥ » Ÿ ش ڷᰡ - ߸ ڷų ¥ ߸ ƴմϴ. μ յڸ - ˻غ ã ֽϴ. ̶ Ǵ° Դϴ. - Բ Ͻñ ٶϴ. - -׸ Ϸ糪 /,/ ̵ɼ ֽϴ. - - ¥¿ 24Ա (¥ ð) ջ - Ȯϱ ¥ Ȯ, ϻ - 2~3 ų ֽϴ. - - -***** - -¥ ¾ ܰ (1996 2 4 22 -8) ̸, 1 ȸͳ ̴ ȿⰣ 365.2423611(=365 5ð -49=525949) ϸ, 1995 12 31 ġ -Ͽϴ. -1ȸͳ ̴ 15ʰ Ůϴ. ̿ õ -Ȩ Խ ϰų ڿ Ͻʽÿ. - -***** - -¾ ׷ 3300⿡ Ϸ , - ¥ ϴ.(Ʒ Ÿ ) - - ڼϰ ǥϸ, ϴ. - -24 - ִ 20̳, 10-ǥ 5 -ջ - ִ 40 ̳, 20-ǥ 10 -( ġ ġ ũ ٸ ʽϴ. Ư ս - Ѵٸ ٰ մϴ.) - -ջð̳ ߱ð 0ø 23 59϶ 01϶ ¥ -޶ ˴ϴ. ̷ ¥ ޶ Ϸ糪 и - ߻մϴ. - - -***** Ÿ - - - ( 2~3) αٿ 2 ߱⸦ ؼ - ¿ ġ ո ˴ϴ. - - - α׷ µ 꿡 δ м(, - 1985 ) õ (1988,1990,1992,1993,1996,1997,1998) - ̸, Ȯ ϱ(, 1982 ձȸ - ),ﱹ(ν),(縶õ),() ȮϿϴ. - - - 1¾ (24 ߻) Ͽ, - ջð ǥ ¾ǥ( м 286) - Ͽϴ. - - - '' 'ﱹ' Ͻı ȮϿϴ. - Ȯΰ Ͻ ߰, ¥» Ÿ - е ȮϽ ֽϴ. - Ͽ ¥ ȸ Ѵٸ ȮҼ - , Ͻ ȮҼ ֽϴ. - - - α׷̳ http://user.chollian.net/~kohyc/calendar - ϰų ڿ kohyc@chollian.net Ͻñ ٶϴ. - ϰ ڷ Ȩ Ǽ ֽϴ. - ֱٹ Ȩ ׻ Ҽ ֽϴ. - - - α׷ ִٸ ڿ ˷ֽø ϰڽϴ. - - -***** ǥ - - - մϴ. ⵵( -10000~10000) (1~12) - Է½Ű ش ǥõ˴ϴ. Է½Ű ⵵ ׷ - Դϴ. - - - ǥó - ȭ ĭ ū ڴ ׷» ¥Դϴ. - Ʒ ڿ ,24Ⱑ ǥõ˴ϴ. - ǥô ¾ǥ̸ ⺻ ǥԴϴ. - Ϸ Բ 'Ͻ'Ȥ 'Ͻİ'̶ ǥð ǥɼ ִµ - Ͻ̶ ǥõ ¥ ݵ Ͻ ֽϴ. Ͻİ̶ ǥõ - ¥ Ͻ Ͼ ɼ ũٴ ǥԴϴ. - Ͻİ ջð ϸ ˼ ֽϴ. - Ŀ '' Ȥ 'İ'̶ ǥð ǥ˴ϴ. ̶ ǥõ - ¥ ݵ ְ, 'İ'̶ ǥõ ¥ Ͼ - ɼ ũٴ ǥԴϴ. - - ¥ĭ߿ ںκ ƴ ش ֺ ˼ ֽϴ. - ߿ ǥõǴ ڴ 28 ϸϿ Դϴ. - ջð Ͻ Ȥ Ͻİ̶ Ÿ ջð Ͻ ִٴ - ǥ̰, ð밡 ̶ 츮󿡼 ϽԴϴ. - ð Ȥ İ̶ Ÿ ð ִٴ - ǥ̰, ð밡 ̶ 츮󿡼 Դϴ. - - ջð ð Ҽ 2ڸ Ǽ ǥõǴµ, ڴ - ش ¾ Ȳ Ȳ鱳 Դϴ. - ڴ 360 ǥ -90 +90̸, ڿ - ڼ ' м' 306 ׸ 10-4 Ͻʽÿ. - - ȭ鿡 ǥõǴ ð 135(GMT+9ð) ðԴϴ. - - - 1999 9 11 ܰ - â diff --git "a/doc/\355\225\250\354\202\255\352\263\274 \354\235\274\354\213\235 \352\263\204\354\202\260\353\260\251\353\262\225.txt" "b/doc/\355\225\250\354\202\255\352\263\274 \354\235\274\354\213\235 \352\263\204\354\202\260\353\260\251\353\262\225.txt" deleted file mode 100644 index 0ef48f2..0000000 --- "a/doc/\355\225\250\354\202\255\352\263\274 \354\235\274\354\213\235 \352\263\204\354\202\260\353\260\251\353\262\225.txt" +++ /dev/null @@ -1,125 +0,0 @@ - 고영창 (fftkrr ) -합삭과 일식계산 방법.. 1998-11-29 15:58 131 line - -제가 사용한 합삭시점계산과 일식 계산 방법은 이렇습니다. - -일식 계산을 위해서는 합삭시점을 정확하게 구하고, 그 시점의 태양황경이 -교점황경과 차이가 얼마나 나는지를 구해서 그 차이가 일식범위내면 일식이 -있는것이고, 범위밖이면 일식이 없는것입니다. - -일식을 계산하기 위해서는 우선 태양의 진황경을 구합니다. -진황경을 구하기 위해서 평균황경를 구하고, 그 평균황경과 근점이각을 구한후에 -근점이각에 따른 중심차(공전궤도가 원일때(평균경도)와 타원일때(진황경)의 -위치차이)를 구합니다. 여기서 사용한 식은요.. 1996년 역서에 나온식입니다. - - 평균황경 sl=278.956807+0.98564736*d - 근점이각 sm=356.087309+0.98560028*d - - (d는 1996년 1월 0일로 부터 떨어진 날수) - -사실은 근지점경도를 먼저 구한후에 평균황경에서 근지점경도를 빼서 근점이각을 -구하는데 설명상 근지점경도는 생략했습니다.(프로그램에서는 근점경도먼저 구했음) - -이 평균황경과 근점이각을 이용해서 중심차를 구했는데, 이 중심차식은 -케플러 제2법칙을 이용해서 타원상의 한점을 시간에 의한 매개변수표현법에 의해서 -계산해서 구할수는 있지만 제가 게을러서 직접 계산하지 않고, -역법의 원리분석 288페이지에서 훔쳐왔습니다. - - 중심차 sd=1.919*sin(sm)+0.020*sin(2*sm) - -그러면 태양의 진황경은 - - 진황경 sreal=sl+sd - -가되구요.. - -이 진황경을 시간으로 분단위까지 구할수 있습니다. -(하루는 d에 1을 더하고, 한시간은 d에 0.04166666666, 1분은 d에 0.000694444을 -더하면 특점 시점(분단위)까지 구할수 있습니다. 물론 균시차는 계산이 -안된상황이구요) - - -그다음에 달의 진황경을 구합니다. -달의 진황경 역시 달의 평균황경을 구한후에 중심차를 더해서 진황경을 -구하는 방식을 사용했는데.. -달은 태양-지구의 영향을 받기 때문에 약간 복잡하죠... - -우선 달의 평균경도는 1996년을 기준으로 - - 평균황경 ml=27.836584+13.17639648*d - -달 역시 타원궤도로 지구를 공전하기 때문에 근지점에 대한 근점이각을 -구해서 달의 위치를 계산합니다. 또 참고삼아 교점황경도 구합니다. -이 식은 1996년 역서에서 가져왔구요.. - - 달의 근점 황경 mn=280.425774+0.11140356*d - 달의 평균근점이각 mm=ml-mn - 달의 교점황경 mi=202.489407-0.05295377*d - -이렇게 구한후에 달의 근점이각과 태양의 근점이각, 교점황경을 -이용해서 달의 중심차를 구합니다. -이 중심차는 3체운동(태양-지구-달)으로 구하는데 저는 어렴풋이 짐작만 -할뿐이고, 실제로 구하는 유도과정은 정확히는 모릅니다. 물론 책보면 -알수 있겠지만 게을러서 공부 안했씀..(죽어도 모른다는 말은 절대 못함 헤헤..) - -달의 중심차는 다음처럼 복잡하게 표현됩니다. 역법의 원리분석에서 가져온 -식입니다. - - 중심차 md=5.068889*sin(mm)+0.146111*sin(2*mm)+0.01*sin(3*mm) - -0.238056*sin(sm)-0.087778*sin(mm+sm)+0.048889*sin(mm-sm) - -0.129722*sin(2*mi)-0.011111*sin(2*mi-mm)-0.012778*sin(2*mi+mm) - -이제 이 중심차를 달의 평균황경에 더하면 달의 진황경이 나옵니다. - - 달의 진황경 mreal=ml+md - -이역시 태양진황경처럼 분단위까지 구하구요.. - -이제 특점 시점을 지정하면(d의 값을 지정하면) 해와 달의 위치(황경)를 구할수 -있습니다. - -음력날짜를 구하기 위해서는 초하루 날짜를 구해야 하는데 초하루는 합삭시간이 -있는 날짜이고, 합삭시간은 달과 태양의 황경이 같은 시점입니다. - -원래는 달과 태양의 황경이 같은 시점을 구하기 위해서는 우선 날짜를 주고 그 날의 -0시의 달과 태양의 위치를 구한후에 이 달과 태양의 위치차이를 구하고, -그 날의 태양의 황경 변화율과 달의 황경변화율을 구한후 이 변화율의 차이를 -구해서 -위치차이를 변화율의 차이로 나누면 0시에서부터 합삭시점까지의 시간이 나옵니다. - -그런데..이렇게 구하려면 간단한 미적분이 필요한데, 이렇게 쉬운문제가지고 미적분 -하면 컴퓨터가 사람을 비웃습니다. -그냥 루프를 돌려서 먼저 일단위,그다음 시간단위, 그다음 분단위로 루프를 돌리면 -해당 시점을 미적분하지 않아도 정확하게(?) 알수 있습니다. - -이렇게 해서 합삭시점을 분단위까지 구할수 있고, 그때의 태양황경(=달의 황경)을 -구할수 있습니다. -그런데 이 시점은 진태양시에서 약간의 오차를 갖는데(약 10분내외), 이 진태양시가 -평균태양시로 변환되면서 최대 40분내의 오차가 생깁니다. - -이제 그날이 d의 값을 통해서 그레고리력으로 몇일이라는것을 알수 있죠. - -그럼 그날이 음력 초하루가 되는거구요. - -그날 일식이 있는지를 알기 위해서는 합삭시점의 태양황경과 저 위에서 구한 -교점황경의 차이를 구합니다. - - 교점차=sreal-mi - -를 한후에 이 교점차의 범위가 -18.5도에서 +18.5도 사이에 있으면 일식이 -있는것이고, 이범위를 벗어나면 일식이 없는거죠. -이 범위는 역법의 원리분석에 자세히 설명되어 있습니다. - -1항성일이 100년에 0.001초씩 길어진다는것은 반영되지 않았습니다. -(사실 이 0.001초라는 수치가 맞는지 틀리는지 확인을 못했거든요) - -사실은 역법의 원리분석에 보면 달과 태양경도식에 율리우스세기수와 관련된 -항(曆表時관련항)이 있기는 하지만요.. 이 수치는 극히 작다고 생각하여 -무시했습니다. 하지만 이 역표시가 4000년에 약 2시간~6시간가량의 오차를 -불러오는것 같습니다. - -이상이 제가 사용한 일식계산 방법입니다. -24절기의 계산방법은 전혀 다릅니다. -이 다음글을 참고하세요. - - PRINTER/CAPTURE를 OFF 하시고 [ENTER] 를 누르십시오. diff --git a/pack.sh b/pack.sh deleted file mode 100755 index f5d2d9f..0000000 --- a/pack.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/sh -# $Id$ - -cp -af package.xml.tmpl package.xml -list=$(grep "md5sum" ./package.xml | sed 's/.*"@\|@".*//g') - -for i in $list -do - md5s=$(md5sum $i | awk '{print $1}') - perl -pi -e "s!\@${i}\@!${md5s}!g" ./package.xml -done - -curdate=$(date +'%Y-%m-%d') -curtime=$(date +'%H:%M:%S') - -perl -pi -e "s!\@curdate\@!${curdate}!g" ./package.xml -perl -pi -e "s!\@curtime\@!${curtime}!g" ./package.xml - -#phpdoc -s on -o HTML:Smarty:PHP -f edb.php,EDB/*.php -t docs - -[ -z "$1" ] && pear package diff --git a/package.xml b/package.xml index 7f71d12..17dd055 100644 --- a/package.xml +++ b/package.xml @@ -1,102 +1,105 @@ - - - Lunar - pear.oops.org - Solar/Lunar Convert API - Solar/Lunar convert API. Original algorithm is by 고영창 (http://afnmp3.homeip.net/~kohyc/calendar/) - - JoungKyun.Kim - joungkyun - joungkyun@gmail.com - yes - - 2015-06-09 - - - 1.0.2 - 1.0.0 - - - devel - stable - - BSD(Lunar.php) & 고영창(Lunar/Lunar_API.php) - * 갑진년이 갑신년으로 표기되는 문제 수정 - - - - - - - - - - - 5.1.0 - - - 1.4.3 - - - - - calendar - php - - - - - - - - 1.0.2 - 1.0.0 - - - stable - stable - - 2015-06-09 - BSD(Lunar.php) & 고영창(Lunar/Lunar_API.php) - * 갑진년이 갑신년으로 표기되는 문제 수정 - - - - - 1.0.1 - 1.0.0 - - - stable - stable - - 2014-01-25 - BSD(Lunar.php) & 고영창(Lunar/Lunar_API.php) - * is_leap method : 1582년 이전은 율리우스력 기준으로 윤년 판단. [@33] + + Lunar + pear.oops.org + Solar/Lunar Convert API + Solar/Lunar convert API. Original algorithm is by 고영창 (http://afnmp3.homeip.net/~kohyc/calendar/) + + JoungKyun.Kim + joungkyun + joungkyun@gmail.com + yes + + 2015-06-09 + + + 1.0.2 + 1.0.0 + + + devel + stable + + BSD(Lunar.php) & 고영창(Lunar/Lunar_API.php) + +* 갑진년이 갑신년으로 표기되는 문제 수정 + + + + + + + + + + + 5.1.0 + + + 1.4.3 + + + + + calendar + php + + + + + + + + 1.0.2 + 1.0.0 + + + stable + stable + + 2015-06-09 + BSD(Lunar.php) & 고영창(Lunar/Lunar_API.php) + +* 갑진년이 갑신년으로 표기되는 문제 수정 + + + + + 1.0.1 + 1.0.0 + + + stable + stable + + 2014-01-25 + BSD(Lunar.php) & 고영창(Lunar/Lunar_API.php) + +* is_leap method : 1582년 이전은 율리우스력 기준으로 윤년 판단. [@33] * calendar example: - 6월과 7월의 마지막날 잘못 표기되는 문제 수정 - IE에서 calendar 토요일 밀리는 문제 해결 - 율리우스력 출력시에 절기 정보 잘못 나오는 문제 수정 * Lunar Frontend method license를 BSD license로 변경 - - - - - 1.0.0 - 1.0.0 - - - stable - stable - - 2013-07-19 - BSD(Lunar.php) & 고영창(Lunar/Lunar_API.php) - * release 1.0.0 + + + + + 1.0.0 + 1.0.0 + + + stable + stable + + 2013-07-19 + BSD(Lunar.php) & 고영창(Lunar/Lunar_API.php) + +* release 1.0.0 * 진짜 만세력 0.92(perl version) and 0.93(pascal version)으로 Core API 포팅 * 1582년 10월 15일 이전 율리우스력 변환 * 율리우스 적일 추가 - - - + + + diff --git a/package.xml.tmpl b/package.xml.tmpl deleted file mode 100644 index b2cf54f..0000000 --- a/package.xml.tmpl +++ /dev/null @@ -1,102 +0,0 @@ - - - - Lunar - pear.oops.org - Solar/Lunar Convert API - Solar/Lunar convert API. Original algorithm is by 고영창 (http://afnmp3.homeip.net/~kohyc/calendar/) - - JoungKyun.Kim - joungkyun - joungkyun@gmail.com - yes - - @curdate@ - - - 1.0.2 - 1.0.0 - - - devel - stable - - BSD(Lunar.php) & 고영창(Lunar/Lunar_API.php) - * 갑진년이 갑신년으로 표기되는 문제 수정 - - - - - - - - - - - 5.1.0 - - - 1.4.3 - - - - - calendar - php - - - - - - - - 1.0.2 - 1.0.0 - - - stable - stable - - @curdate@ - BSD(Lunar.php) & 고영창(Lunar/Lunar_API.php) - * 갑진년이 갑신년으로 표기되는 문제 수정 - - - - - 1.0.1 - 1.0.0 - - - stable - stable - - 2014-01-25 - BSD(Lunar.php) & 고영창(Lunar/Lunar_API.php) - * is_leap method : 1582년 이전은 율리우스력 기준으로 윤년 판단. [@33] -* calendar example: - - 6월과 7월의 마지막날 잘못 표기되는 문제 수정 - - IE에서 calendar 토요일 밀리는 문제 해결 - - 율리우스력 출력시에 절기 정보 잘못 나오는 문제 수정 -* Lunar Frontend method license를 BSD license로 변경 - - - - - 1.0.0 - 1.0.0 - - - stable - stable - - 2013-07-19 - BSD(Lunar.php) & 고영창(Lunar/Lunar_API.php) - * release 1.0.0 -* 진짜 만세력 0.92(perl version) and 0.93(pascal version)으로 Core API 포팅 -* 1582년 10월 15일 이전 율리우스력 변환 -* 율리우스 적일 추가 - - - - diff --git a/tests/calendar/158210.php b/tests/calendar/158210.php deleted file mode 100644 index 58956d5..0000000 --- a/tests/calendar/158210.php +++ /dev/null @@ -1,12 +0,0 @@ - diff --git a/tests/calendar/error.html b/tests/calendar/error.html deleted file mode 100644 index 5c515be..0000000 --- a/tests/calendar/error.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - 유효기간 에러 - - - - - - diff --git a/tests/calendar/index.php b/tests/calendar/index.php deleted file mode 100644 index 062c56c..0000000 --- a/tests/calendar/index.php +++ /dev/null @@ -1,546 +0,0 @@ - 12 ) { - $nextm = 1; - $nexty = $y + 1; - } else - $nexty = $y; - - if ( $prevm < 10 ) - $prevm = '0' . $prevm; - - if ( $nextm < 10 ) - $nextm = '0' . $nextm; - - return (object) array ( - 'prev' => $prevy . '-' . $prevm, - 'next' => $nexty . '-' . $nextm - ); -} - -$cur = date ('Y-m-d'); - -if ( preg_match ('/^(-?[0-9]{1,4})-([0-9]{1,2})$/', $_GET['v'], $match) ) { - array_shift ($match); - list ($year, $month) = $match; -} else - list ($year, $month) = preg_split ('/-/', $cur); - -if ( $year < -2400 || $year > 2200 ) { - readfile ('./error.html'); - exit; -} - -$gregorian_check = $year . $month; - -$lday = array (0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); -$wday = array ('일' => 1, '월' => 2, '화' => 3, '수' => 4, '목' => 5, '금' => 6, '토' => 7); - -$old = microtime (); - -$lunar = new Lunar; - -$cdate = $year . '-' . $month . '-01'; -$fday = $lunar->tolunar ($cdate); -$tune = $lunar->dayfortune ($cdate); -$moon = $lunar->moonstatus ($cdate); -$moon1 = $lunar->moonstatus ($year . '-' . $month . '-28'); -$s28 = $lunar->s28day ($cdate); -$season = $lunar->seasondate ($cdate); - -/* - * pear_Lunar 1.0.0에서는 is_leap method가 연도만으로 율리우스력 - * 판단을 하지 않으며로 아래과 같이 조건을 체크해야 한다. - * if ( $lunar->is_leap ($year, $year < 1583 ? true : false) ) - * pear_Lunar 1.0.1 부터는 2번째 인자가 없어도, 연도만으로 - * 율리우스력 판단을 한다. - */ -if ( $lunar->is_leap ($year) ) - $lday[2] = 29; -$lastday = $lday[(int) $month]; - -if ( $fday->moonyoon ) - $fday->month = '(閏)' . $fday->month; - -$tdstart = $wday[$fday->week]; -$tdend = $tdstart + $lastday; - -if ( $gregorian_check == 158210 ) { - require_once '158210.php'; -} else { - $lm = '[ \'\', \'' . $fday->month . '\''; - $ld = '[ 0, ' . $fday->day; - $l28s = '[ \'\', \'' . $s28->h . '\''; - $liljin = '[ \'\', \'' . $tune->hday . '\''; - - $_s28 = $s28; - $mbuf = $fday->month; - $dbuf = $fday->day; - for ( $i=1; $i<$lastday; $i++ ) { - $chk = false; - $dbuf++; - - if ( $fday->largemonth ) { - if ( $dbuf > 30 ) { - $mbuf = preg_replace ('/[^0-9]/', '', $fday->month); - $mbuf ++; - $dbuf -= 30; - $chk = true; - } - } else { - if ( $dbuf > 29 ) { - $mbuf = preg_replace ('/[^0-9]/', '', $fday->month); - $mbuf ++; - $dbuf -= 29; - $chk = true; - } - } - - if ( $chk ) { - if ( ($i + 2) > $lday[(int) $month] ) { - $cmon = $month + 1; - $cday = ($i + 2) - $lday[(int) $month]; - } else { - $cmon = $month; - $cday = $i + 2; - } - $cdate = ''; - $cdate = $year . '-' . $cmon . '-' . $cday; - #echo $cdate . ' : ' . $lday[(int) $month] . ' : ' . $i . "
\n"; - $r = $lunar->tolunar ($cdate); - /* - echo "
\n";
-			print_r ($r);
-			echo "
\n"; - */ - - if ( $season->center->month != $month ) - $season = $lunar->seasondate ($cdate); - - $mbuf = $r->moonyoon ? '(閏)' : ''; - $mbuf .= $r->month; - - if ( $r->largemonth ) - $fday->largemonth = true; - $chk == false; - } - - $lm .= ', \'' . $mbuf . '\''; - $ld .= ', ' . $dbuf; - $_s28 = $lunar->s28day ($_s28); - $l28s .= ', \'' . $_s28->h . '\''; - - $gindex = $tune->data->d + $i; - if ( $gindex >= 60 ) - $gindex -= 60; - - $liljin .= ', \'' . $lunar->ganji_ref($gindex, true) . '\''; - } - $lm .= ' ]'; - $ld .= ' ]'; - $l28s .= ' ]'; - $liljin .= ' ]'; -} - -$np = prev_next ($year, $month); - -$hyear = $lunar->human_year ($year); - -$new = microtime (); -$ptime = get_microtime ($old, $new); -?> - - - - Lunar/Solar Pear package - - - - - - - - - - - - - -
- -

- Lunar/Solar Pear Calendar - About - View Source -

- -
- 이전월 - 월 (hmonth?>) - 다음월 -
- -
- -
-
-
-
-
-
-
-
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
- -
-
Processing Time:
sec
-
Valid Period:
BC 2401(-2400)년 ~ AD 2300

- -
이번달 절입:
center->name?> - center->hyear?>년 - center->month?>월 - center->day?>일 - center->hour?>시 - center->min?>분 - Julian Date center->julian?>
-
이번달 중기:
ccenter->name?> - ccenter->hyear?>년 - ccenter->month?>월 - ccenter->day?>일 - ccenter->hour?>시 - ccenter->min?>분 - Julian Date ccenter->julian?>
-
다음달 절입:
nenter->name?> - nenter->hyear?>년 - nenter->month?>월 - nenter->day?>일 - nenter->hour?>시 - nenter->min?>분 - Julian Date nenter->julian?>

- -
합삭 (New Moon):
- new->hyear?>년 - new->month?>월 - new->day?>일 - new->hour?>시 - new->min?>분 - Julian Date new->julian?>
-
망 (Full Moon):
- full->hyear?>년 - full->month?>월 - full->day?>일 - full->hour?>시 - full->min?>분 - Julian Date full->julian?>
- -
합삭 (New Moon):
- new->hyear?>년 - new->month?>월 - new->day?>일 - new->hour?>시 - new->min?>분 - Julian Date new->julian?>
-
망 (Full Moon):
- full->hyear?>년 - full->month?>월 - full->day?>일 - full->hour?>시 - full->min?>분 - Julian Date full->julian?>
- - - - -
- -
* About Lunar/Solar Pear Package
- -

- Lunar Pear package는 - 고영창님의 - 진짜만세력 0.92 Perl 버전을 - PHP로 포팅한 것이다. -

- -

- 먼저 달력을 보기전에 다음 사항을 꼭 인지를 해야 한다. -

- -
    -
  1. 우리가 사용하는 그레고리력은 1582년 10월 15일 부터 존재한다.
  2. -
  3. 1582년 10월 15일 이전은 율리우스력으로 표기한다.
  4. -
  5. 1582년 10월 5일 부터 1582년 10월 14일은 calender상에 존재하지 않는다.
  6. -
- -

- 그럼 고영창님의 진짜만세력과 다른 - 달력들과의 차이가 발생하는 이유를 살펴 보자면 다음의 특징들이 있다. -

- -
    -
  1. 대부분의 calendar들은 1582년 10월 15일 이전을 율리우스력으로 표기한다.
  2. -
  3. 진짜만세력은 모든 표시를 - 그레고리력으로 표기한다.
  4. -
  5. 심지어 진짜만세력은 - 존재하지 않는 1582.10.5~1582.10.14 기간을 표시한다. -
- -

- 이런 이유로 고영장님의 진짜만세력은 - 1582년 10월 15일 이전의 데이터에 대해서는 다른 달력들과 많은 차이를 보이게 - 된다. 하지만, 그렇다고 해서 고영창님의 달력이 잘못되었다고 할 수는 없으며, - 율리우스 적일(Julian date)의 경우에는 정확한 표기를 하고 있는 것으로 보인다. -

- -

- 또한, 기존의 달력들이 database를 구축하여 사용하는 방식이나, 고영창님의 - 진짜만세력은 계산에 의하여 사용 - 되므로, 음력 윤달의 기준이 조금 다르기 때문에 일간이나 음력윤달의 차이로 - 인하여 음력날자가 1~2일 정도가 차이가 발생할 수 있다. 이에 대해서는 고영창님의 - 홈페이지를 - 참조하기 바란다. - -

- 진짜만세력과 여기서 배포하는 - 진짜만세력 PHP API의 차이는 다음과 같다. -

- -
    -
  1. 모든 계산은 original 진짜만세력의 - 계산 방식을 따른다. (이는 다른 calendar들과 음력 날자가 1~2일의 차이가 - 발생할 수 있고, 음력 윤달이 다를 수 있다.)
  2. -
  3. 1582년 10월 15일 이전의 표기를 율리우스력을 사용한다. (다른 - calender들과 역사 기록과 맞추기 위해서...)
  4. -
  5. 율리우스력을 사용하기 때문에 기원전 calender는 BC 4713년 - 2월 8일 부터 가능하다.
  6. -
  7. 위의 이유는 진짜만세력의 - 계산은 그레고리력으로 하기 때문에 율리우스력을 그레고리력으로 - 변환하기 위한 알고리즘의 제약 때문이다.
  8. -
- -

- 고영창님의 진짜만세력과 동일하게 - 포팅한 버전을 원할 경우, - http://oops.org/project/manse/original을 - 참고 하도록 한다. -

- -

- 이 API의 유효기간은 다음과 같다. -

- -
    -
  • 32bit: -
      -
    • 양력 BC 2086(-2087)년 2월 9일 ~ AD 6078년 1월 29일
    • -
    • 음력 BC 2086(-2087)년 1월 1일 ~ AD 6077년 12월 29일
    • -
    • BC 2087년 7월 5일부터는 계산이 급속하게 느려진다.
    • -
    -
  • -
  • 64bit: -
      -
    • BC 4713(-4712)년 2월 8일 ~ AD 9999년 12월 31일
    • -
    • API의 연도 체크가 4자리 까지이므로 10000년 이상은 확인 못함
    • -
    • 64bit 계산이 가능한 시점까지 가능할 듯..
    • -
    • 기원전의 경우 율리우스 적일이 BC 4713년 1월 1일 부터이므로 - 그레고리력 변환이 가능한 BC 4713년 2월 8일부터 가능하다.
    • -
    -
  • -
- -

- 현 페이지의 달력은 BC 2399년 부터 AD 2300년 까지만 지원을 한다. 그 이유는 - 이 시점을 벋어날 경우, 계산 속도가 급속하게 느려지기 때문이다. -

- -

- 왠만하면, 과거 2000년과 미래 100년 구간 이내에서 사용하는 것을 권장한다. -

- -

- 진짜만세력에 대해서는 다음의 URL을 - 참고 하기 바란다.

- - Original Site - http://afnmp3.homeip.net:81/~kohyc/calendar/index.cgi
- PHP Source - OOPS.org SVN
- Download & Installation - pear.oops.org -

- -
- -
Copyright © 2013 OOPS.org
-
- -
- -
- - diff --git a/tests/calendar/manse-ie.css b/tests/calendar/manse-ie.css deleted file mode 100644 index 533e264..0000000 --- a/tests/calendar/manse-ie.css +++ /dev/null @@ -1,5 +0,0 @@ -@charset "utf-8"; - -.ctd { - width: 69px; -} diff --git a/tests/calendar/manse-ie7.css b/tests/calendar/manse-ie7.css deleted file mode 100644 index 4375352..0000000 --- a/tests/calendar/manse-ie7.css +++ /dev/null @@ -1,5 +0,0 @@ -@charset "utf-8"; - -.ctd { - display: inline; -} diff --git a/tests/calendar/manse.css b/tests/calendar/manse.css deleted file mode 100644 index 71bc89c..0000000 --- a/tests/calendar/manse.css +++ /dev/null @@ -1,118 +0,0 @@ -@charset "utf-8" - -@import url(//cdn.oops.org/fonts/nanumgothic.css); - -* html #poststuff { - height: 100%; /* kill peekaboo bug in IE */ -} - -html, body { - margin: 0; - padding: 0; - height: 100%; -} - -body, div, td, li, label { - font-size: 12px; - font-family: 'Nanum Gothic', '나눔고딕', '굴림', Gulim, sans-serif; - color: #555; -} - -h3 { - text-align: center; -} - -.guide { - margin: 0 auto; - padding-top: 20px; - width: 600px; - /* border: 1px dotted #ccc; */ -} - -.year-title { - text-align: center; -} - -.cur-month { - font-weight: bold; - font-size: 24px; - margin-left: 20px; - margin-right: 20px; -} - -div#calendar { - background-color: #ddd; - margin: 10px auto; - padding-top: 3px; - padding-left: 4px; - padding-bottom: 3px; - width: 90%; - /* border: 1px dotted #ddd; */ - border-radius: 6px; - -moz-border-radius: 6px; - -webkit-border-radius: 6px; -} - -div#context { - margin: 10px auto; - width: 90%; -} - -.ctd { - text-align: left; - background-color: #eee; - width: 70px; - display: inline-block; - margin: 2px 2px; - font-size: 14px; -} - -.yoil { - font-size: 12px; - text-align: center; - font-weight: bold; -} - -.day { - float: right; - font-size: 24px; - font-weight: bold; -} - -.sun { - color: #da4f49; -} - -.sat { - color: #2f96b4; -} - -.su { - color: #555; -} - -.lun { - color: #5bb75b; - font-size: 12px; -} - -.iljin { - color: #555; -} - -.julip { - color: #e81ad8; -} - -.b { - font-weight: bold; -} - -.stitle { - display: inline-block; - width: 120px; -} - -.copy { - float: right; -} diff --git a/tests/confirm1.php b/tests/confirm1.php deleted file mode 100644 index eb0cea4..0000000 --- a/tests/confirm1.php +++ /dev/null @@ -1,73 +0,0 @@ - 양력 요일 검증 ====================================\n"; -$z = array (); -for ( $i=1842; $i<=2040; $i++ ) { - $z = $lunar->tolunar ($i . '0101'); - $p[] = array ($z->date, $z->tday); - #echo sprintf ("\tarray ('%d', '%s'),\n", preg_replace ('/-/', '', $p->date), $p->tday); -} - -foreach ( $p as $v ) { - $y = substr ($v[0], 0, 4); - $m = substr ($v[0], 5, 2); - $d = substr ($v[0], 8, 2); - - $td = date ('D', mktime (0, 0, 0, $m, $d, $y)); - - $buf = $lunar->tosolar ($v[0]); - if ( $v[1] != $buf->tday ) { - printf ( - "%s (%s - $td) : %s (%s)\n", - $v[0], $v[1], $buf->date, $buf->tday - ); - } -} - - -echo "== 양력 -> 음력 요일 검증 ====================================\n"; - -$z = array (); -for ( $i=1841; $i<=2040; $i++ ) { - $z = $lunar->tosolar ($i . '0101'); - $p[] = array ($z->date, $z->tday); - #echo sprintf ("\tarray ('%d', '%s'),\n", preg_replace ('/-/', '', $p->date), $p->tday); -} - -foreach ( $p as $v ) { - $y = substr ($v[0], 0, 4); - $m = substr ($v[0], 5, 2); - $d = substr ($v[0], 8, 2); - - $td = date ('D', mktime (0, 0, 0, $m, $d, $y)); - - $buf = $lunar->tolunar($v[0]); - if ( $v[1] != $buf->tday ) { - printf ( - "%s (%s - $td) : %s (%s)\n", - $v[0], $v[1], $buf->date, $buf->tday - ); - } -} diff --git a/tests/confirm2.php b/tests/confirm2.php deleted file mode 100644 index a361d1f..0000000 --- a/tests/confirm2.php +++ /dev/null @@ -1,40 +0,0 @@ -음력->양력으로 - * 변환하여 변환전의 양력과 변환후의 양력을 비교 검증 - */ - -$iniget = function_exists ('___ini_get') ? '___ini_get' : 'ini_get'; -$iniset = function_exists ('___ini_set') ? '___ini_set' : 'ini_set'; - -$cwd = getcwd (); -$ccwd = basename ($cwd); -if ( $ccwd == 'tests' ) { - $oldpath = $iniget ('include_path'); - $newpath = preg_replace ("!/{$ccwd}!", '', $cwd); - $iniset ('include_path', $newpath . ':' . $oldpath); -} - -require_once 'Lunar.php'; - -$lunar = new Lunar; - -$z = array (); -for ( $i=1842; $i<=2041; $i++ ) { - for ( $j=1; $j<=12; $j++ ) { - $j = ($j < 10) ? '0' . $j : $j; - - echo "- $i.$j.01\n"; - $z = $lunar->tolunar ($i . $j . '01'); - $z1 = $lunar->tosolar ($z->date, $z->moonyoon); - - if ( $z1->date != "{$i}-{$j}-01" || $z->tday != $z1->tday ) { - printf ("** %d-%s-01 %s(양) %s(음) %s %s\n", $i, $j, $z1->date, $z->date, $z1->tday, $z->tday); - } - } - -} - diff --git a/tests/sample.php b/tests/sample.php deleted file mode 100644 index 3a4efcd..0000000 --- a/tests/sample.php +++ /dev/null @@ -1,368 +0,0 @@ -toargs (&$v) - * - * input: - * 2013-07-13 - * 2013-7-13 - * 20130713 - * 1373641200 - * Null - * - * output: - * Array - * ( - * [0] => 2013 - * [1] => 7 - * [2] => 13 - * ) - * - * and reference variavble $v is changed to '2013-07-13' - */ - -$v = '2013-7-13'; -$r = $lunar->toargs ($v); -echo "### $v\n"; -print_r ($r); - -/* - * $lunar->human_year ($y) - * - * input: - * -2334 - * - * output: - * BC 2333 - */ - -echo $lunar->human_year (-2333); - -/* - * $lunar->is_reap ($y) - * - * input: - * 1992 (양력) - * - * output: - * true - */ - -if ( $lunar->is_leap (1992) ) - echo "This is Yoon Year\n"; -else - echo "This is not Yoon Year\n"; - -/* - * $lunar->tolunar ($date) - * - * input: - * 2013-07-16 or - * 2013-7-16 or - * 20130716 or - * 1373900400 or - * NULL - * - * output - * stdClass Object - * ( - * [date] => 2013-06-09 - * [dangi] => 4346 - * [hyear] => AD 2013 - * [year] => 2013 - * [month] => 6 - * [day] => 9 - * [moonyoon] => - * [largemonth] => 1 - * [week] => 화 - * [hweek] => 火 - * [unixstamp] => 1373900400 - * [ganji] => 계사 - * [hganji] => 癸巳 - * [gan] => 계 - * [hgan] => 癸 - * [ji] => 사 - * [hji] => 巳 - * [ddi] => 뱀 - * ) - */ - -print_r ($lunar->tolunar ('2013-07-16')); - -/* - * $lunar->tosolar ($date) - * - * input: - * 2013-06-09 or - * 2013-6-09 or - * 20130609 or - * NULL - * - * output - * stdClass Object - * ( - * [date] => 2013-07-16 - * [dangi] => 4346 - * [hyear] => AD 2013 - * [year] => 2013 - * [month] => 7 - * [day] => 16 - * [week] => 화 - * [hweek] => 火 - * [unixstamp] => 1373900400 - * [ganji] => 계사 - * [hganji] => 癸巳 - * [gan] => 계 - * [hgan] => 癸 - * [ji] => 사 - * [hji] => 巳 - * [ddi] => 뱀 - * ) - */ - -print_r ($lunar->tosolar ('2013-06-09')); - -/* - * 구하는 음력월의 윤달 여부를 모른다면 다음과 같이 확인 - * 과정이 필요하다. - */ -$lun = '2013-06-09'; -$solv = $lunar->tosolar ($lun); -$lunv = $lunar->tolunar ($sol->date); -if ( $lun != $lunv->date ) - $solv = $lunar->tosolar ($lun, true); - - -/* - * $lunar->dayfortuen ($date) - * - * input: - * 2013-07-16 or - * 2013-7-16 or - * 20130716 or - * 1373900400 or - * NULL - * - * output: - * stdClass Object - * ( - * [data] => stdClass Object - * ( - * [y] => 29 // 세차 index - * [m] => 55 // 월건 index - * [d] => 19 // 일진 index - * ) - * - * [year] => 계사 // 세차 값 - * [month] => 기미 // 월건 값 - * [day] => 계미 // 일진 값 - * [hyear] => 癸巳 // 한자 세차 값 - * [hmonth] => 己未 // 한자 월건 값 - * [hday] => 癸未 // 한자 일진 값 - * ) - */ - -print_r ($lunar->dayfortune ('2013-07-16')); - -/* - * 7월 1일 부터 30일 까지의 일진을 구할 경우 - * 다음은 아주 안좋은 방법이다. - */ - -for ( $i=1; $i<31; $i++ ) { - $r = $lunar->dayfortune ('2013-07-' . $i); - $iljin[$i] = $r->day; -} - -/* - * 위의 경우는 아래와 같이 $lunar->ganji_ref method를 이용하여 - * 성능을 높일 수 있다. - */ - -$r = $lunar->dayfortune ('2013-07-01'); -$iljin[$i] = $r->day; -$gindex = $r->data->d; - -for ( $i=2; $i<31; $i++ ) { - $gindex++; - if ( $gindex >= 60 ) - $gindex -= 60; - $iljin[$i] = $lunar->ganji_ref[$gindex]; -} - - -/* - * $lunar->s28day ($date) - * - * input: - * 2013-07-16 or - * 2013-7-16 or - * 20130716 or - * 1373900400 or - * NULL - * - * output: - * stdClass Object - * ( - * [data] => 5 - * [k] => 미 - * [h] => 尾 - * ) - */ - -print_r ($lunar->s28day ('2013-07-16')); - -/* - * 역시 7/1 부터 7/30 까지의 일진을 구할 경우에는 다음과 같이 - * 하면 성능이 매우 좋아진다. - */ - -$s28 = null; -for ( $i=0; $i<30; $i++ ) { - if ( $s28 === null ) - $s28 = $lunar->s28day ('2013-07-01'); - else - $s28 = $lunar->s28day ($s28); - - $s28v[$i] = $s28->k; -} - -/* - * $lunar->seasondate ($date) - * - * input: - * 2013-07-16 or - * 2013-7-16 or - * 20130716 or - * 1373900400 or - * NULL - * - * output: - * stdClass Object - * ( - * [center] => stdClass Object - * ( - * [name] => 소서 - * [hname] => 小暑 - * [hyear] => AD 2013 - * [year] => 2013 - * [month] => 7 - * [day] => 7 - * [hour] => 7 - * [min] => 49 - * ) - * - * [ccenter] => stdClass Object - * ( - * [name] => 대서 - * [hname] => 大暑 - * [hyear] => AD 2013 - * [year] => 2013 - * [month] => 7 - * [day] => 23 - * [hour] => 1 - * [min] => 11 - * ) - * - * [nenter] => stdClass Object - * ( - * [name] => 입추 - * [hname] => 立秋 - * [hyear] => AD 2013 - * [year] => 2013 - * [month] => 8 - * [day] => 7 - * [hour] => 17 - * [min] => 36 - * ) - * ) - */ - -print_r ($lunar->seasondate ('2013-07-16')); - - -/* - * $lunar->moonstatus ($date) - * - * input: - * 2013-07-16 or - * 2013-7-16 or - * 20130716 or - * 1373900400 or - * NULL - * - * output: - * stdClass Object - * ( - * [new] => stdClass Object - * ( - * [hyear] => AD 2013 - * [year] => 2013 - * [month] => 7 - * [day] => 8 - * [hour] => 16 - * [min] => 15 - * ) - * - * [full] => stdClass Object - * ( - * [hyear] => AD 2013 - * [year] => 2013 - * [month] => 7 - * [day] => 23 - * [hour] => 2 - * [min] => 59 - * ) - * ) - */ - -print_r ($lunar->moonstatus ('2013-07-01')); - -/* - * 합삭/망 정보의 경우, 한달에 음력월이 2개가 있으므로, - * 1일의 정보만 얻어서는 합삭/망 중에 1개의 정보만 나올 수 있다. - * 그러므로, 1일의 데이터를 얻은 다음, 음력 1일의 정보까지 구하면 - * 한달의 합삭/망 정보를 모두 표현할 수 있다. - */ - -$lun = $lunar->tolunar ('2013-07-01'); - -if ( $lun->largemonth ) // 평달의 경우 마지막이 29일이고 큰달은 30일이다. - $plus = 29 - $lun->day; -else - $plus = 30 - $lun->day; - -$r1 = $lunar->moonstatus ('2013-07-01'); // 음력 2013-05-23 -$r2 = $lunar->moonstatus ('2013-07-' . 1 + $plus); // 음력 2013-06-01 - -print_r ($r1); -print_r ($r2); - -?> diff --git a/tests/test.php b/tests/test.php deleted file mode 100644 index d50c47a..0000000 --- a/tests/test.php +++ /dev/null @@ -1,95 +0,0 @@ -toargs ($target); - -echo "**\n"; -printf ("** target date is %s\n", $target); -echo "**\n"; -echo "\n"; - -# 1일의 음력 정보 -$z = $lunar->tolunar ($target); -# 이번달의 세차/월간/일진 정보 -$tune = $lunar->dayfortune ($target); -# 1일의 음력월에 대한 합삭/망 정보 -$moon = $lunar->moonstatus ($target); -# 1일의 28수 정보 -$s28 = $lunar->s28day ($target); -# 이번달의 절기 정보 -$season = $lunar->seasondate ($target); - -$yoon = $z->moonyoon ? ', 윤달' : ''; -$bmon = $z->largemonth ? '큰달' : '평달'; - -echo <<date} {$z->week} ({$z->hweek}) -연 {$z->year} -월 {$z->month} ($bmon$yoon) {$tune->month}({$tune->hmonth})월 -일 {$z->day} {$tune->day}({$tune->hday})일 -간지 {$z->ganji} ({$z->hganji}) ({$tune->year}) -띠 {$z->ddi} -28수 {$s28->k} ({$s28->h}) - -합삭 (New Moon) {$moon->new->year}년 {$moon->new->month}월 {$moon->new->day}일 {$moon->new->hour}시 {$moon->new->min}분 -망 (Full Moon) {$moon->full->year}년 {$moon->full->month}월 {$moon->full->day}일 {$moon->full->hour}시 {$moon->full->min}분 - - -EOF; - -foreach ( $season as $v ) - printf ("%s(%s) %d년 %d월 %d일\n", $v->name, $v->hname, $v->year, $v->month, $v->day); - - -$z = $lunar->tosolar ($z->date, $z->moonyoon); - -echo <<date} {$z->week} ({$z->hweek}) -연 {$z->year} -월 {$z->month} -일 {$z->day} -간지 {$z->ganji} ({$z->hganji}) -띠 {$z->ddi} - -EOF; - -/* - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * End: - * vim: set filetype=php noet sw=4 ts=4 fdm=marker: - * vim600: noet sw=4 ts=4 fdm=marker - * vim<600: noet sw=4 ts=4 - */ -?>