solar - 24 절기 solar object - sun position or 24 solar terms PHP/8.0.22
소스닫기 | 24절기 계산 | 음양력변환, 일출몰, 월출몰, 별자리, 일월식 계산 | 메시에 관측정보(실시간) | 메시에 관측정보(오늘전체) | deltaT 계산 | 부활절 날짜 계산
<?php
require_once '_lib/class.astro.php';
require_once '_lib/class.calendar.php';
require_once '_lib/class.solar.php';
$_self = $_SERVER['SCRIPT_NAME']; //basename($_SERVER['SCRIPT_NAME']);
$title = 'solar - 24 절기 solar object - sun position or 24 solar terms';
$phpv = 'PHP/'.PHP_VERSION;
echo <<<___END
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>$title</TITLE><P><H2>$title $phpv</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; }
input { background-color:#ffffff; border:solid 1px #4f7292; margin:0 0 0 0; height:30px; }
.code {
/* display: block | table-cell | inline-table; */
display: table-cell; vertical-align: middle;
padding: 10px;
margin: 10px 5px 20px 5px; /* 상, 우, 하, 좌 */ /* 바깥쪽 여백임 */
background: #eeeeee;
border-radius: 0.5em / 0.5em;
font-family: Dotumche,monospace; white-space: pre;
width:800px; }
.pre-fontspace { font-family:Dotumche,Helvetica,monospace; white-space: pre; }
.pre-font { font-family:Dotumche,Helvetica,monospace; }
.pre-space { white-space: pre; }
.solidbox {
display: table-cell; vertical-align: middle;
padding: 10px;
margin: 10px 5px 20px 5px; /* 상, 우, 하, 좌 */ /* 바깥쪽 여백임 */
background: #eeeeee;
border-radius: 0.5em / 0.5em; } /* 모서리 둥글게 */
//-->
</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(isset($_GET['view']))
{
echo '<A HREF="'.$_self.'">소스닫기</A>'.$menu.'<HR>'."\n";
highlight_file(basename($_self));
return;
}
if(isset($_POST['_p']))
{
$_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>데모 - 24절기와 태양의 위치(Geocentric)</H2>
<div class="solidbox pre-font" style="height:30px;">- 유효기간: 양력 1902.01.01 00:00:00 ~ 2037.12.31 23:59:59</div>
<p>
<FORM METHOD=post>
<div class="solidbox pre-space" style="width:800px;"
>년월일-시분초: <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"'>
</div>
</FORM>
<p>
<div class="code"
>[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 초
</div>
___END;
//$solar = new solar();
$today = solar::today($utime);
$tmoon = solar::terms($_p['y'],$_p['m'],0);
$sun = solar::sun($utime);
$sambok = solar::sambok($_p['y']);
$suns = array();
$tterms = solar::terms($_p['y'],1,12,$suns);
echo '<p>';
echo '<div class=code>';
echo '<b>'.$_p['y'].'년</b><p>'."\n";
echo '<b>오늘 :</b> '.astro::vto($today,'-').'<P>'."\n";
print_r($sambok);
echo "\n\n";
echo '<b>이번달:</b> '.$_p['y'].'년 '.$_p['m'].'월'."\n";
print_r($tmoon);
echo "</div>\n";
echo "<p>\n";
echo '<div class=code>'."\n";
echo '<b>현재시각의 태양의 위치:</b>'."\n";
print_r($sun);
echo "</div>\n";
echo "<p>\n";
echo '<div class=code>'."\n";
echo "<b>24절기 정보:</b>\n";
print_r($tterms);
echo "\n\n";
print_r($suns);
echo "</div>\n";
echo "</BODY>\n</HTML>";
return;
?>
Page loading: 0.00(server) + (network) + (browser) seconds