PHP: Calcolare il giorno della Pasqua
Di seguito vi propongo una classe per ricavare il giorno della Pasqua passando un determinato anno, mi è tornata utile per la realizzazione di un Planner.
Per ricavare il mese ed il giorno della Pasqua dell’anno 2012 basta chiamare il metodo Pasqua::get passando come argomento “2012″:
Pasqua::get(2012); // ritorna Array([day]=>18 [month]=>4)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | <?php /** * Pasqua * * Questa classe determia il giorno della Pasqua * di un determinato anno, si basa sul calcolo detto * Metodo aritmetico di Gauss spiegato in questa pagina: * http://it.wikipedia.org/wiki/Calcolo_della_Pasqua * * @author Guido Chiappucci */ class Pasqua { private static $aM = array(22, 22, 23, 23, 24, 24); private static $aN = array(2, 2, 3, 4, 5, 5); /** * Pasqua::get() * * Il metodo get restituise un array * contenente il mese ed il giorno * della Pasqua riferita all'anno * passato al metodo attraverso $year * * @param integer $year * @return array */ public static function get($year) { $a = $year % 19; $b = $year % 4; $c = $year % 7; $aIndex= floor($year/100)-15; $d = (19 * $a + self::$aM[$aIndex]) % 30; $e = (2 * $b + 4 * $c + 6 * $d + self::$aN[$aIndex]) % 7; $day = 22 + $d + $e; $month = 3; if ($day > 31) { $month = 4; $day -= 31; } /** * Eccezioni: * - Se la data risultante dalla formula è il 26 aprile, * allora la Pasqua cadrà il giorno 19 aprile; * - Se la data risultante dalla formula è il 25 aprile * e contemporaneamente d = 28, e = 6 e a > 10, * allora la Pasqua cadrà il 18 aprile. */ if ($month == 4 && $day == 26) { $day = 19; } elseif ($month == 4 && $day == 26 && $d == 28 && $e == 6 && $a > 10) { $day = 18; } return array('day'=>$day,'month'=>$month); } } ?> |
nella riga 5 del codice c’è scritto pascqua (CON LA C!!!)
Luca
8 giu 12 at 20:54
Ciao, hai ragione… che asino…
Correggo subito!
Guido
8 giu 12 at 22:14