php准确计算复活节日期的方法
本文实例讲述了php准确计算复活节日期的方法。分享给大家供大家参考。具体如下:
<?PHP functionisLeapYear($nYEAR){ if((($nYEAR%4==0)AND!($nYEAR%100==0))AND($nYEAR%400!=0)) { returnTRUE; }else{ returnFALSE; } } functiondiv($a,$b){ return($a-($a%$b))/$b; } functioneasterSunday($nYEAR){ //Thefunctionisabletocalculatethedate //ofeastersundaybacktotheyear325, //butmktime()startsat1970-01-01! if($nYEAR<1970){ $dtEasterSunday=mktime(1,1,1,1,1,1970); }else{ $nGZ=($nYEAR%19)+1; $nJHD=div($nYEAR,100)+1; $nKSJ=div(3*$nJHD,4)-12; $nKORR=div(8*$nJHD+5,25)-5; $nSO=div(5*$nYEAR,4)-$nKSJ-10; $nEPAKTE=((11*$nGZ+20+$nKORR-$nKSJ)%30); if(($nEPAKTE==25OR$nGZ==11)AND$nEPAKTE==24){ $nEPAKTE=$nEPAKTE+1; } $nN=44-$nEPAKTE; if($nN<21){ $nN=$nN+30; } $nN=$nN+7-(($nSO+$nN)%7); $nN=$nN+isLeapYear($nYEAR); $nN=$nN+59; $nA=isLeapYear($nYEAR); //Month $nNM=$nN; if($nNM>(59+$nA)){ $nNM=$nNM+2-$nA; } $nNM=$nNM+91; $nMONTH=div(20*$nNM,611)-2; //Day $nNT=$nN; $nNT=$nN; if($nNT>(59+$nA)){ $nNT=$nNT+2-$nA; } $nNT=$nNT+91; $nM=div(20*$nNT,611); $nDAY=$nNT-div(611*$nM,20); $dtEasterSunday=mktime(0,0,0,$nMONTH,$nDAY,$nYEAR); } return$dtEasterSunday; } ?>
希望本文所述对大家的php程序设计有所帮助。