24 절기 solar object -- get sun position or 24 solar terms

소스닫기 | 24절기 계산 | 음양력변화, 별자리, 일월식 계산 | 메시에 관측정보(실시간) | 메시에 관측정보(오늘전체) | deltaT 계산 | 부활절 날짜 계산
<?php
require_once '_lib/class.calendar.php';
require_once 
'_lib/class.solar.php';

$_self basename($_SERVER['SCRIPT_NAME']);
$title '24 절기 solar object -- get sun position or 24 solar terms';

echo <<<___END
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>
$title</TITLE><P><H2>$title</H2>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<SCRIPT LANGUAGE="JavaScript" type="text/JavaScript">
<!--
var starttime = (new Date()).getTime();
//-->
</SCRIPT>
<STYLE TYPE="text/css">
<!--
 * { font-family:NanumGothic,'나눔고딕','Malgun Gothic',Dotum,'돋움',Gulim,'굴림',Helvetica,Apple-Gothic; }
  body { font-size:10pt; }
-->
</STYLE>
</HEAD>
<BODY>\n
___END;

$_menuindex = array
(
  
'solar.php'  => '24절기 계산',
  
'lunar.php'  => '음양력변화, 별자리, 일월식 계산',
  
'messier.php'=> '메시에 관측정보(실시간)',
  
'messier.today.php'=>'메시에 관측정보(오늘전체)',
  
'deltat.php' => 'deltaT 계산',
  
'easter.php' => '부활절 날짜 계산'
);

$menu '';
foreach(
$_menuindex AS $k=>$v)  $menu .= " | <A HREF='$k'>$v</A>";

if(
$_GET['view'])
{
  echo 
'<A HREF="'.$_self.'">소스닫기</A>'.$menu.'<HR>'."\n";
  
highlight_file(basename($_self));
  return;
}

if(
$_POST)
{
  
$_p $_POST['_p'];
  
$utime calendar::_mktime($_p['h'],$_p['i'],$_p['s'],$_p['m'],$_p['d'],$_p['y']);
} else
{
  
$utime time();
  list(
$_p['h'],$_p['i'],$_p['s'],$_p['m'],$_p['d'],$_p['y']) =
    
explode(' ',date('H i s n d Y',$utime));
}

echo 
'<A HREF="'.$_self.'?view=1">소스보기</A>'.$menu.'<HR>'."\n";
echo <<<___END
<H2>데모 -- 테스트</H2>
<PRE>
- 유효기간: 양력 1902.01.01 00:00:00 - 2037.12.31 23:59:59
<FORM METHOD=post>
년월일-시분초: <INPUT TYPE=text NAME='_p[y]' VALUE='
$_p[y]' SIZE=5 MAXLENGTH=5
>년 <INPUT TYPE=text NAME='_p[m]' VALUE='
$_p[m]' SIZE=2 MAXLENGTH=2
>월 <INPUT TYPE=text NAME='_p[d]' VALUE='
$_p[d]' SIZE=2 MAXLENGTH=2
>일 - <INPUT TYPE=text NAME='_p[h]' VALUE='
$_p[h]' SIZE=2 MAXLENGTH=2
>시 <INPUT TYPE=text NAME='_p[i]' VALUE='
$_p[i]' SIZE=2 MAXLENGTH=2
>분 <INPUT TYPE=text NAME='_p[s]' VALUE='
$_p[s]' SIZE=2 MAXLENGTH=2
>초<BR>
<INPUT TYPE=submit VALUE=' 다시 계산하기 '
> <INPUT TYPE=button VALUE=' 초기화 ' OnClick='location.href="
$_self"'>
</FORM>
[author]
 - Chilbong Kim, < san2(at)linuxchannel.net >
 - http://linuxchannel.net/

[근사식에 대한 신뢰] 1902 ~ 2000 년
 - 표준편차 : 1289.7736 = 21.5 분
 - 평균오차 : +817.57409541246 = +13.6 분
 - 최대오차 : +4102.7340(68.4 분), -4347.2395(72.5 분)

[근사식으로 계산한 24절기 실제 오차] 1902 ~ 2037 년
 - 표준편차 : 1122.1921 = 18.7 분
 - 평균오차 : +686.08382175161 = +11.4 분
 - 최대오차 : +4297.252300024(71.6 분), -4278.048699975(71.3 분)
 - 최소오차 : +0.16999998688698(0초)

[근사식 + 년도 보정으로 계산한 24절기 실제 오차] 1902 ~ 2037 년
 - 표준편차 : 450.8534 = 7.5 분
 - 평균오차 : +305.38638890903 = 5.0 분
 - 최대오차 : +3028.2343000174 = 50.5 분, -1982.9391000271 = 33.1 분
 - 최소오차 : +0.0085000991821289 = 0 초
___END;

$today  solar::today($utime);
$tmoon  solar::terms($_p['y'],$_p['m'],0);
$sun    solar::sun($utime);
$suns   = array();
$tterms solar::terms($_p['y'],1,12,$suns);

echo 
'<HR>'."\n";
echo 
'<H3>년도 : '.$_p['y'].'년</H3><P>'."\n";
echo 
'오늘 : '.$today.'<P>'."\n";
echo 
'이번달 : '.$_p['y'].'년 '.$_p['m'].'월'."\n";
print_r($tmoon);
echo 
"\n\n";
echo 
'현재시각의 태양의 위치: '."\n";
print_r($sun);
echo 
"\n\n";
print_r($tterms);
echo 
"\n\n";
print_r($suns);


echo 
"\n</BODY>\n</HTML>";
return;
?>

Page loading: 0.02(server) + (network) + (browser) seconds