244 lines
10 KiB
PHP
244 lines
10 KiB
PHP
|
|
<?php
|
||
|
|
#############################################################
|
||
|
|
/*
|
||
|
|
|
||
|
|
PHPschool의 석봉운님 오픈소스를 수정하여 사용하였습니다.
|
||
|
|
석봉운님께 감사드립니다.
|
||
|
|
주소 http://www.phpschool.com/bbs2/inc_view.html?id=9914&code=tnt2
|
||
|
|
|
||
|
|
음력 데이터는
|
||
|
|
작은 달 : 1
|
||
|
|
큰달 : 2
|
||
|
|
윤달이 있는 달 - 평달이 작고 윤달도 작으면 : 3
|
||
|
|
평달이 작고 윤달이 크면: 4
|
||
|
|
평달이 크고 윤달이 작으면 : 5
|
||
|
|
평달과 윤달이 모두 크면: 6
|
||
|
|
*/
|
||
|
|
#############################################################
|
||
|
|
$kk = array (
|
||
|
|
//1841년 ~ 1900년
|
||
|
|
1,2,4,1,1,2,1,2,1,2,2,1, 2,2,1,2,1,1,2,1,2,1,2,1, 2,2,2,1,2,1,4,1,2,1,2,1, 2,2,1,2,1,2,1,2,1,2,1,2, 1,2,1,2,2,1,2,1,2,1,2,1,
|
||
|
|
2,1,2,1,5,2,1,2,2,1,2,1, 2,1,1,2,1,2,1,2,2,2,1,2, 1,2,1,1,2,1,2,1,2,2,2,1, 2,1,2,3,2,1,2,1,2,1,2,2, 2,1,2,1,1,2,1,1,2,2,1,2,
|
||
|
|
2,2,1,2,1,1,2,1,2,1,5,2, 2,1,2,2,1,1,2,1,2,1,1,2, 2,1,2,2,1,2,1,2,1,2,1,2, 1,2,1,2,1,2,5,2,1,2,1,2, 1,1,2,1,2,2,1,2,2,1,2,1,
|
||
|
|
2,1,1,2,1,2,1,2,2,2,1,2, 1,2,1,1,5,2,1,2,1,2,2,2, 1,2,1,1,2,1,1,2,2,1,2,2, 2,1,2,1,1,2,1,1,2,1,2,2, 2,1,6,1,1,2,1,1,2,1,2,2,
|
||
|
|
1,2,2,1,2,1,2,1,2,1,1,2, 2,1,2,1,2,2,1,2,2,3,1,2, 1,2,2,1,2,1,2,2,1,2,1,2, 1,1,2,1,2,1,2,2,1,2,2,1, 2,1,1,2,4,1,2,2,1,2,2,1,
|
||
|
|
2,1,1,2,1,1,2,2,1,2,2,2, 1,2,1,1,2,1,1,2,1,2,2,2, 1,2,2,3,2,1,1,2,1,2,2,1, 2,2,2,1,1,2,1,1,2,1,2,1, 2,2,2,1,2,1,2,1,1,5,2,1,
|
||
|
|
2,2,1,2,2,1,2,1,2,1,1,2, 1,2,1,2,2,1,2,1,2,2,1,2, 1,1,2,1,2,4,2,1,2,2,1,2, 1,1,2,1,2,1,2,1,2,2,2,1, 2,1,1,2,1,1,2,1,2,2,2,1,
|
||
|
|
2,2,1,1,5,1,2,1,2,2,1,2, 2,2,1,1,2,1,1,2,1,2,1,2, 2,2,1,2,1,2,1,1,2,1,2,1, 2,2,4,2,1,2,1,1,2,1,2,1, 2,1,2,2,1,2,2,1,2,1,1,2,
|
||
|
|
1,2,1,2,1,2,5,2,2,1,2,1, 1,2,1,2,1,2,1,2,2,1,2,2, 1,1,2,1,1,2,1,2,2,2,1,2, 2,1,1,2,3,2,1,2,2,1,2,2, 2,1,1,2,1,1,2,1,2,1,2,2,
|
||
|
|
2,1,2,1,2,1,1,2,1,2,1,2, 2,2,1,5,2,1,1,2,1,2,1,2, 2,1,2,2,1,2,1,1,2,1,2,1, 2,1,2,2,1,2,1,2,1,2,1,2, 1,5,2,1,2,2,1,2,1,2,1,2,
|
||
|
|
1,2,1,2,1,2,1,2,2,1,2,2, 1,1,2,1,1,5,2,2,1,2,2,2, 1,1,2,1,1,2,1,2,1,2,2,2, 1,2,1,2,1,1,2,1,2,1,2,2, 2,1,2,1,5,1,2,1,2,1,2,1,
|
||
|
|
2,2,2,1,2,1,1,2,1,2,1,2, 1,2,2,1,2,1,2,1,2,1,2,1, 2,1,5,2,2,1,2,1,2,1,2,1, 2,1,2,1,2,1,2,2,1,2,1,2, 1,2,1,1,2,1,2,5,2,2,1,2,
|
||
|
|
|
||
|
|
//1901년 ~ 2000년
|
||
|
|
1,2,1,1,2,1,2,1,2,2,2,1, 2,1,2,1,1,2,1,2,1,2,2,2, 1,2,1,2,3,2,1,1,2,2,1,2, 2,2,1,2,1,1,2,1,1,2,2,1, 2,2,1,2,2,1,1,2,1,2,1,2,
|
||
|
|
1,2,2,4,1,2,1,2,1,2,1,2, 1,2,1,2,1,2,2,1,2,1,2,1, 2,1,1,2,2,1,2,1,2,2,1,2, 1,5,1,2,1,2,1,2,2,2,1,2, 1,2,1,1,2,1,2,1,2,2,2,1,
|
||
|
|
2,1,2,1,1,5,1,2,2,1,2,2, 2,1,2,1,1,2,1,1,2,2,1,2, 2,2,1,2,1,1,2,1,1,2,1,2, 2,2,1,2,5,1,2,1,2,1,1,2, 2,1,2,2,1,2,1,2,1,2,1,2,
|
||
|
|
1,2,1,2,1,2,2,1,2,1,2,1, 2,3,2,1,2,2,1,2,2,1,2,1, 2,1,1,2,1,2,1,2,2,2,1,2, 1,2,1,1,2,1,5,2,2,1,2,2, 1,2,1,1,2,1,1,2,2,1,2,2,
|
||
|
|
2,1,2,1,1,2,1,1,2,1,2,2, 2,1,2,2,3,2,1,1,2,1,2,2, 1,2,2,1,2,1,2,1,2,1,1,2, 2,1,2,1,2,2,1,2,1,2,1,1, 2,1,2,5,2,1,2,2,1,2,1,2,
|
||
|
|
1,1,2,1,2,1,2,2,1,2,2,1, 2,1,1,2,1,2,1,2,2,1,2,2, 1,5,1,2,1,1,2,2,1,2,2,2, 1,2,1,1,2,1,1,2,1,2,2,2, 1,2,2,1,1,5,1,2,1,2,2,1,
|
||
|
|
2,2,2,1,1,2,1,1,2,1,2,1, 2,2,2,1,2,1,2,1,1,2,1,2, 1,2,2,1,6,1,2,1,2,1,1,2, 1,2,1,2,2,1,2,2,1,2,1,2, 1,1,2,1,2,1,2,2,1,2,2,1,
|
||
|
|
2,1,4,1,2,1,2,1,2,2,2,1, 2,1,1,2,1,1,2,1,2,2,2,1, 2,2,1,1,2,1,4,1,2,2,1,2, 2,2,1,1,2,1,1,2,1,2,1,2, 2,2,1,2,1,2,1,1,2,1,2,1,
|
||
|
|
2,2,1,2,2,4,1,1,2,1,2,1, 2,1,2,2,1,2,2,1,2,1,1,2, 1,2,1,2,1,2,2,1,2,2,1,2, 1,1,2,4,1,2,1,2,2,1,2,2, 1,1,2,1,1,2,1,2,2,2,1,2,
|
||
|
|
2,1,1,2,1,1,2,1,2,2,1,2, 2,5,1,2,1,1,2,1,2,1,2,2, 2,1,2,1,2,1,1,2,1,2,1,2, 2,2,1,2,1,2,3,2,1,2,1,2, 2,1,2,2,1,2,1,1,2,1,2,1,
|
||
|
|
2,1,2,2,1,2,1,2,1,2,1,2, 1,2,1,2,4,2,1,2,1,2,1,2, 1,2,1,1,2,2,1,2,2,1,2,2, 1,1,2,1,1,2,1,2,2,1,2,2, 2,1,4,1,1,2,1,2,1,2,2,2,
|
||
|
|
1,2,1,2,1,1,2,1,2,1,2,2, 2,1,2,1,2,1,1,5,2,1,2,2, 1,2,2,1,2,1,1,2,1,2,1,2, 1,2,2,1,2,1,2,1,2,1,2,1, 2,1,2,1,2,5,2,1,2,1,2,1,
|
||
|
|
2,1,2,1,2,1,2,2,1,2,1,2, 1,2,1,1,2,1,2,2,1,2,2,1, 2,1,2,3,2,1,2,1,2,2,2,1, 2,1,2,1,1,2,1,2,1,2,2,2, 1,2,1,2,1,1,2,1,1,2,2,1,
|
||
|
|
2,2,5,2,1,1,2,1,1,2,2,1, 2,2,1,2,2,1,1,2,1,2,1,2, 1,2,2,1,2,1,5,2,1,2,1,2, 1,2,1,2,1,2,2,1,2,1,2,1, 2,1,1,2,2,1,2,1,2,2,1,2,
|
||
|
|
1,2,1,1,5,2,1,2,2,2,1,2, 1,2,1,1,2,1,2,1,2,2,2,1, 2,1,2,1,1,2,1,1,2,2,2,1, 2,2,1,5,1,2,1,1,2,2,1,2, 2,2,1,2,1,1,2,1,1,2,1,2,
|
||
|
|
2,2,1,2,1,2,1,5,2,1,1,2, 2,1,2,2,1,2,1,2,1,2,1,1, 2,2,1,2,1,2,2,1,2,1,2,1, 2,1,1,2,1,6,1,2,2,1,2,1, 2,1,1,2,1,2,1,2,2,1,2,2,
|
||
|
|
1,2,1,1,2,1,1,2,2,1,2,2, 2,1,2,3,2,1,1,2,2,1,2,2, 2,1,2,1,1,2,1,1,2,1,2,2, 2,1,2,2,1,1,2,1,1,5,2,2, 1,2,2,1,2,1,2,1,1,2,1,2,
|
||
|
|
1,2,2,1,2,2,1,2,1,2,1,1, 2,1,2,2,1,5,2,2,1,2,1,2, 1,1,2,1,2,1,2,2,1,2,2,1, 2,1,1,2,1,2,1,2,2,1,2,2, 1,2,1,1,5,1,2,1,2,2,2,2,
|
||
|
|
1,2,1,1,2,1,1,2,1,2,2,2, 1,2,2,1,1,2,1,1,2,1,2,2, 1,2,5,2,1,2,1,1,2,1,2,1, 2,2,2,1,2,1,2,1,1,2,1,2, 1,2,2,1,2,2,1,5,2,1,1,2,
|
||
|
|
1,2,1,2,2,1,2,1,2,2,1,2, 1,1,2,1,2,1,2,2,1,2,2,1, 2,1,1,2,3,2,2,1,2,2,2,1, 2,1,1,2,1,1,2,1,2,2,2,1, 2,2,1,1,2,1,1,2,1,2,2,1,
|
||
|
|
|
||
|
|
//2001년 ~ 2043년
|
||
|
|
2,2,2,3,2,1,1,2,1,2,1,2, 2,2,1,2,1,2,1,1,2,1,2,1, 2,2,1,2,2,1,2,1,1,2,1,2, 1,5,2,2,1,2,1,2,1,2,1,2, 1,2,1,2,1,2,2,1,2,2,1,1,
|
||
|
|
2,1,2,1,2,1,5,2,2,1,2,2, 1,1,2,1,1,2,1,2,2,2,1,2, 2,1,1,2,1,1,2,1,2,2,1,2, 2,2,1,1,5,1,2,1,2,1,2,2, 2,1,2,1,2,1,1,2,1,2,1,2,
|
||
|
|
2,1,2,2,1,2,1,1,2,1,2,1, 2,1,6,2,1,2,1,1,2,1,2,1, 2,1,2,2,1,2,1,2,1,2,1,2, 1,2,1,2,1,2,1,2,5,2,1,2, 1,2,1,1,2,1,2,2,2,1,2,2,
|
||
|
|
1,1,2,1,1,2,1,2,2,1,2,2, 2,1,1,2,3,2,1,2,1,2,2,2, 1,2,1,2,1,1,2,1,2,1,2,2, 2,1,2,1,2,1,1,2,1,2,1,2, 2,1,2,5,2,1,1,2,1,2,1,2,
|
||
|
|
1,2,2,1,2,1,2,1,2,1,2,1, 2,1,2,1,2,2,1,2,1,2,1,2, 1,5,2,1,2,1,2,2,1,2,1,2, 1,2,1,1,2,1,2,2,1,2,2,1, 2,1,2,1,1,5,2,1,2,2,2,1,
|
||
|
|
2,1,2,1,1,2,1,2,1,2,2,2, 1,2,1,2,1,1,2,1,1,2,2,2, 1,2,2,1,5,1,2,1,1,2,2,1, 2,2,1,2,2,1,1,2,1,1,2,2, 1,2,1,2,2,1,2,1,2,1,2,1,
|
||
|
|
2,1,5,2,1,2,2,1,2,1,2,1, 2,1,1,2,1,2,2,1,2,2,1,2, 1,2,1,1,2,1,5,2,2,2,1,2, 1,2,1,1,2,1,2,1,2,2,2,1, 2,1,2,1,1,2,1,1,2,2,1,2,
|
||
|
|
2,2,1,2,1,4,1,1,2,1,2,2, 2,2,1,2,1,1,2,1,1,2,1,2, 2,2,1,2,1,2,1,2,1,1,2,1, 2,2,1,2,5,2,1,2,1,2,1,1, 2,1,2,2,1,2,2,1,2,1,2,1,
|
||
|
|
2,1,1,2,1,2,2,1,2,2,1,2, 1,5,1,2,1,2,1,2,2,2,1,2, 1,2,1,1,2,1,1,2,2,1,2,2);
|
||
|
|
|
||
|
|
|
||
|
|
###################################################
|
||
|
|
/*
|
||
|
|
$sy/ly : 년
|
||
|
|
$sm/lm : 월
|
||
|
|
$sd/ld : 일
|
||
|
|
$leapyes: 윤달
|
||
|
|
*/
|
||
|
|
###################################################
|
||
|
|
|
||
|
|
$md = array(31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
|
||
|
|
|
||
|
|
function febdays($sy) {
|
||
|
|
if(($sy%100 != 0 && $sy%4 ==0) || $sy%400 ==0) $md[1] = 29;
|
||
|
|
else $md[1] = 28;
|
||
|
|
return array($md[1]);
|
||
|
|
}
|
||
|
|
|
||
|
|
function alltd($sy) {
|
||
|
|
global $md;
|
||
|
|
$td = 0;
|
||
|
|
for($i=1841;$i<=$sy-1;$i++) {
|
||
|
|
list($md[1]) = febdays($i);
|
||
|
|
for($j=0;$j<12;$j++) {
|
||
|
|
$td += $md[$j];
|
||
|
|
$ttd[$i][12] += $md[$j];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
$td -= 22;
|
||
|
|
return array($td);
|
||
|
|
}
|
||
|
|
|
||
|
|
function soltolun($sy, $sm, $sd) {
|
||
|
|
global $kk;
|
||
|
|
global $md;
|
||
|
|
|
||
|
|
list($td) = alltd($sy);
|
||
|
|
list($md[1]) = febdays($sy);
|
||
|
|
for($i=0;$i<$sm-1;$i++) $td += $md[$i];
|
||
|
|
$td += $sd;
|
||
|
|
$i = 0;
|
||
|
|
$temptd = $td;
|
||
|
|
while($temptd>0) {
|
||
|
|
$yoon = "";
|
||
|
|
switch($kk[$i]) {
|
||
|
|
case 1 :
|
||
|
|
$mm = 29;
|
||
|
|
break;
|
||
|
|
case 2 :
|
||
|
|
$mm = 30;
|
||
|
|
break;
|
||
|
|
case 3 :
|
||
|
|
$mm = 29;
|
||
|
|
$ymm = 29;
|
||
|
|
if($temptd > 29) {
|
||
|
|
$temptd -= 29;
|
||
|
|
$yoon = "*";
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
case 4 :
|
||
|
|
$mm = 29;
|
||
|
|
$ymm = 30;
|
||
|
|
if($temptd > 30) {
|
||
|
|
$temptd -= 30;
|
||
|
|
$yoon = "*";
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
case 5 :
|
||
|
|
$mm = 30;
|
||
|
|
$ymm = 29;
|
||
|
|
if($temptd > 29) {
|
||
|
|
$temptd -= 29;
|
||
|
|
$yoon = "*";
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
case 6 :
|
||
|
|
$mm = 30;
|
||
|
|
$ymm = 30;
|
||
|
|
if($temptd > 30) {
|
||
|
|
$temptd -= 30;
|
||
|
|
$yoon = "*";
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
$temptd -=$mm;
|
||
|
|
|
||
|
|
$i++;
|
||
|
|
if($i%12 == 1) $ly += 1;
|
||
|
|
}
|
||
|
|
if($temptd <= 0) {
|
||
|
|
if($yoon=="*") $temptd += $ymm;
|
||
|
|
else $temptd +=$mm;
|
||
|
|
}
|
||
|
|
$ly += 1840;
|
||
|
|
$lm = $i % 12;
|
||
|
|
if($lm==0) $lm=12;
|
||
|
|
$ld = $temptd;
|
||
|
|
|
||
|
|
/* output */
|
||
|
|
$myarray["year"] = $ly;
|
||
|
|
$myarray["month"] = $lm;
|
||
|
|
$myarray["day"] = $ld;
|
||
|
|
$myarray["leap"] = $yoon;
|
||
|
|
return $myarray;
|
||
|
|
}
|
||
|
|
|
||
|
|
function luntosol($ly, $lm, $ld) {
|
||
|
|
global $kk;
|
||
|
|
global $md;
|
||
|
|
|
||
|
|
$temptd = 0;
|
||
|
|
$dm = ($ly-1841)*12 + ($lm-1) -1;
|
||
|
|
for($i=$dm;$i>=0;$i--) {
|
||
|
|
switch($kk[$i]) {
|
||
|
|
case 1 :
|
||
|
|
$temptd += 29;
|
||
|
|
break;
|
||
|
|
case 2 :
|
||
|
|
$temptd += 30;
|
||
|
|
break;
|
||
|
|
case 3 :
|
||
|
|
$temptd += 58;
|
||
|
|
break;
|
||
|
|
case 4 :
|
||
|
|
case 5 :
|
||
|
|
$temptd += 59;
|
||
|
|
break;
|
||
|
|
case 6 :
|
||
|
|
$temptd += 60;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
$dm = ($ly-1841)*12 + ($lm) -1;
|
||
|
|
if($leapyes == "yoon") {
|
||
|
|
switch($kk[$dm]) {
|
||
|
|
case 1 :
|
||
|
|
case 2 : break;
|
||
|
|
case 3 :
|
||
|
|
case 4 :
|
||
|
|
$temptd += 29;
|
||
|
|
break;
|
||
|
|
case 5 :
|
||
|
|
case 6 :
|
||
|
|
$temptd += 30;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
$temptd += $ld;
|
||
|
|
$temptd += 22;
|
||
|
|
$td = $temptd;
|
||
|
|
$tempsy = 1841;
|
||
|
|
while(1) {
|
||
|
|
list($md[1]) = febdays($tempsy);
|
||
|
|
for($tempsm=0;$tempsm<=11;$tempsm++) {
|
||
|
|
$temptd -= $md[$tempsm];
|
||
|
|
if($temptd <= 0) break;
|
||
|
|
}
|
||
|
|
if($temptd <= 0) {
|
||
|
|
$temptd += $md[$tempsm];
|
||
|
|
$tempsd = $temptd;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
$tempsy++;
|
||
|
|
}
|
||
|
|
|
||
|
|
$sy = $tempsy;
|
||
|
|
$sm = $tempsm + 1;
|
||
|
|
$sd = $tempsd;
|
||
|
|
|
||
|
|
/* output */
|
||
|
|
$myyarray["year"] = $sy;
|
||
|
|
$myyarray["month"] = $sm;
|
||
|
|
$myyarray["day"] = $sd;
|
||
|
|
$myyarray["leap"] = $yoob;
|
||
|
|
return $myyarray;
|
||
|
|
}
|
||
|
|
|
||
|
|
?>
|