EASTER - 부활절 날짜 계산 PHP/8.0.22
소스닫기 | 24절기 계산 | 음양력변환, 일출몰, 월출몰, 별자리, 일월식 계산 | 메시에 관측정보(실시간) | 메시에 관측정보(오늘전체) | deltaT 계산 | 부활절 날짜 계산
<?php
##
## source from php
##
function _easter($year)
{
$golden = ($year % 19) + 1; /* Golden number */
if($year < 1583)
{
$dom = ($year + ($year/4) + 5) % 7; /* the "Dominical number" - finding a Sunday */
if ($dom < 0) $dom += 7;
$pfm = (3 - (11*$golden) - 7) % 30; /* uncorrected date of the Paschal full moon */
if ($pfm < 0) $pfm += 30;
}
else
{
$dom = ($year + ($year/4) - ($year/100) + ($year/400)) % 7; /* the "Domincal number" */
if ($dom < 0) $dom += 7;
$solar = ($year-1600)/100 - ($year-1600)/400; /* the solar and lunar corrections */
$lunar = ((($year-1400) / 100) * 8) / 25;
$pfm = (3 - (11*$golden) + $solar - $lunar) % 30; /* uncorrected date of the Paschal full moon */
if ($pfm < 0) $pfm += 30;
}
if (($pfm==29) || ($pfm==28 && $golden>11)) /* corrected date of the Paschal full moon */
{
$pfm--; /* - days after 21st March */
}
$tmp = (4 - $pfm - $dom) % 7;
if ($tmp < 0) $tmp += 7;
$easter = $pfm + $tmp + 1; /* Easter as the number of days after 21st March */
$easter -= (int)calendar::isleap($year); // patch san2@2024.11.08
if($easter < 11)
{
$m = 3;
$d = $easter + 21;
}
else
{
$m = 4;
$d = $easter - 10;
}
$JD = calendar::getjd0($year,$m,$d,0);
$w = calendar::date('w',$JD,0);
if($w) $JD += (7 - $w); // not sunday
return calendar::date('m/d',$JD,0);
}
require_once '_lib/class.calendar.php';
require_once '_lib/class.astro.php';
require_once '_lib/class.meeus.php';
require_once '_lib/class.de405.php';
require_once '_lib/func.debug.php';
DE405::set_datadir($_SERVER['DOCUMENT_ROOT'].'/_lib');
$_self = basename($_SERVER['SCRIPT_NAME']);
$title = 'EASTER - 부활절 날짜 계산';
$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=utf-8">
<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(isset($_GET['view']))
{
echo '<A HREF="'.$_self.'">소스닫기</A>'.$menu.'<HR>'."\n";
highlight_file(basename($_self));
return;
}
echo '<A HREF="'.$_self.'?view=1">소스보기</A>'.$menu.'<HR>'."\n";
$_y = $_GET['_py'] ?? date('Y');
$y = floor($_y/50) * 50 + 1;
?>
<style>TD { font-size: 10pt; }</style>
<!--
<FORM METHOD=get>
<INPUT TYPE=text NAME='_py' VALUE='<?=$_y?>' SIZE=5 MAXLENGTH=5>년(50년 단위, 1906~2037) <INPUT TYPE=submit VALUE=' 계산하기(Submit) '
><INPUT TYPE=reset VALUE=' reset '>
</FORM>
//-->
<A HREF='<?=$_self?>?_py=1901'>1901~1950</A> |
<A HREF='<?=$_self?>?_py=1951'>1951~2000</A> |
<A HREF='<?=$_self?>?_py=2001'>2001~2037</A> | 유효기간: 1906 ~ 2037
<PRE>
UTC+0 기준
년도 춘분 보름 부활절 Psource
<?php
for($i=0; $i<50; $i++)
{
$JD = calendar::getjd0($y,1,1,0);
if($y > 2037) break;
list($r,$de,$df) = easter($JD);
$e = _easter($y);
$e .= ($r == $e) ? '' : ' F';
echo "$y $de $df $r $e\n";
$y++;
}
echo "</PRE></BODY>\n</HTML>";
return;
?>
Page loading: 0.00(server) + (network) + (browser) seconds