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