|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2015-01-25 10:32 UTC] andris dot petrams at gmail dot com
Description: ------------ --- From manual page: http://www.php.net/function.easter-date --- easter_date(1970); return Mar-28-1970 (Saturday) is not Easter Day Test script: --------------- <?php echo date("M-d-Y (l)", easter_date(1970)); ?> Actual result: -------------- easter_date(); 1970-1989 return: Apr-10-1971 (Saturday) Apr-01-1972 (Saturday) Apr-21-1973 (Saturday) Apr-13-1974 (Saturday) Mar-29-1975 (Saturday) Apr-17-1976 (Saturday) Apr-09-1977 (Saturday) Mar-25-1978 (Saturday) Apr-14-1979 (Saturday) Apr-05-1980 (Saturday) Apr-18-1981 (Saturday) Apr-10-1982 (Saturday) Apr-02-1983 (Saturday) Apr-21-1984 (Saturday) Apr-06-1985 (Saturday) Mar-29-1986 (Saturday) Apr-18-1987 (Saturday) Apr-02-1988 (Saturday) Mar-25-1989 (Saturday) PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Tue Nov 04 23:00:01 2025 UTC |
My solve for this: <?php function EasterDate($X){ // X = year to compute $str=$X; if($X>0){ $K = floor($X / 100); // Secular number $M = ceil(15 + (3 * $K + 3) / 4 - (8 * $K + 13) / 25); // Secular Moon shift $S = ceil(2 - (3 * $K + 3) / 4); // Secular sun shift $A = $X % 19; // Moon parameter $D = (19 * $A + $M) % 30; // Seed for 1st full Moon in spring $R = floor($D / 29 + ($D / 28 - $D / 29) * ($A / 11)); // Calendarian correction quantity $OG = 21 + $D - $R; // Easter limit $SZ = 7 - floor($X + $X / 4 + $S) % 7; // 1st sunday in March $OE = 7 - ($OG - $SZ) % 7; // Distance Easter sunday from Easter limit in days $dt = (((($OG + $OE)%31)==0)?31:(($OG + $OE)%31)); $mn = ((($OG + $OE)>31)?4:3); return new DateTime($X."-".$mn."-".$dt); //return $date->format('c (l) e'); } return $str; } echo '<table border="1">'; for($i=1970; $i<2038; $i++){ echo '<tr><td>'.date("c (l) e", easter_date($i)).'</td> <td>'.EasterDate($i)->format('c (l) e').'</td></tr>'; } echo '<table>'; ?>