本文实例讲述了php准确计算复活节日期的方法。分享给大家供大家参考。具体如下:
<?phpfunction isleapyear( $nyear ) { if((($nyear % 4 == 0) and !($nyear % 100 == 0)) and ($nyear % 400 != 0)) { return true; } else { return false; }}function p( $a, $b ){ return( $a - ( $a % $b )) / $b;}function eastersunday( $nyear ) { // the function is able to calculate the date //of eastersunday back to the year 325, // but mktime() starts at 1970-01-01! if ( $nyear < 1970 ) { $dteastersunday = mktime( 1,1,1,1,1,1970 ); } else { $ngz = ( $nyear % 19 ) + 1; $njhd = p( $nyear, 100 ) + 1; $nksj = p( 3 * $njhd, 4 ) - 12; $nkorr = p( 8 * $njhd + 5, 25 ) - 5; $nso = p( 5 * $nyear, 4 ) - $nksj - 10; $nepakte = (( 11 * $ngz + 20 + $nkorr - $nksj ) % 30 ); if (( $nepakte == 25 or $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 = p( 20 * $nnm, 611 ) - 2; // day $nnt = $nn; $nnt = $nn; if ( $nnt > ( 59 + $na )) { $nnt = $nnt + 2 - $na; } $nnt = $nnt + 91; $nm = p( 20 * $nnt, 611 ); $nday = $nnt - p( 611 * $nm, 20 ); $dteastersunday = mktime( 0,0,0,$nmonth,$nday,$nyear ); } return $dteastersunday;}?>
总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。
相关推荐:
使用snoopy类解析html文件的方法
php针对文件操作及字符串加密的方法
php针对数组的删除、转换、分组、排序
以上就是php实现计算复活节准确日期的方法的详细内容。
