PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

easter_days> <cal_to_jd
Last updated: Fri, 11 Apr 2008

view this page in

easter_date

(PHP 4, PHP 5)

easter_date — Retourne un timestamp UNIX pour Pâques, à minuit pour une année donnée

Description

int easter_date ([ int $year ] )

Retourne un timestamp UNIX pour Pâques, à minuit, pour une année donnée.

Avertissement

Cette fonction génère une alerte (Warning) si la date tombe hors de la zone de validité des timestamp UNIX (i.e. avant 1970 ou après 2037).

La date de Pâques a été fixée par le concile de Nicée, en 325 de notre ère, comme étant le dimanche après la première pleine lune qui suit l'équinoxe de printemps. L'équinoxe de printemps est considéré comme étant toujours le 21 mars, ce qui réduit le problème au calcul de la date de la lune pleine qui suit, et le dimanche suivant. L'algorithme fut introduit vers 532, par Dionysius Exiguus. Avec le calendrier Julien, (pour les années avant 1753), un cycle de 19 ans suffit pour connaître les dates des phases de la lune. Avec le calendrier grégorien, (à partir des années 1753, conçu par Clavius et Lilius, puis introduit par le pape Grégoire XIII en octobre 1582, et en Grande Bretagne et ses colonies en septembre 1752), deux facteurs de corrections ont été ajoutés pour rendre le cycle plus précis.

(Ce code est basé sur le programme en C de Simon Kershaw, <webmaster@ely.anglican.org>)

Liste de paramètres

year

L'année, sous la forme d'un nombre compris entre 1970 et 2037

Valeurs de retour

La date pour Pâques, sous la forme d'un timestamp unix.

Historique

Version Description
Depuis la version 4.3.0 Le paramètre year est optionnel et vaut par défaut l'année courante vis à vis de l'heure locale.

Exemples

Exemple #1 Exemple avec easter_date()

<?php

echo date("M-d-Y"easter_date(1999));        // Apr-04-1999
echo date("M-d-Y"easter_date(2000));        // Apr-23-2000
echo date("M-d-Y"easter_date(2001));        // Apr-15-2001

?>

Voir aussi

  • easter_days() pour le calcul de Pâques avant 1970 et après 2037



easter_days> <cal_to_jd
Last updated: Fri, 11 Apr 2008
 
add a note add a note User Contributed Notes
easter_date
nigelf at esp dot co dot uk
28-Jan-2008 03:50
v5.2.1 - There is a known bug with easter_date() that can return incorrect dates for some years:

// 2008 OK
echo date("D d M Y", easter_date(2008));  // Sun 23 Mar 2008

// 2009 returns Saturday
echo date("D d M Y", easter_date(2009));  // Sat 11 Apr 2009

However easter_days() works correctly:

echo date("D d M Y", strtotime("2009-03-21 +".easter_days(2009)." days"));  // Sun 12 Apr 2009

It is apparently related to timezone settings.
14-Aug-2006 07:46
I made the function like this ... works fine !

function ostern
{
    $maerz21=date('z',mktime(0,0,0,3,21,$jb));

    $d=((15 + $jb/100 - $jb/400 - (8 * $jb/100 + 13) / 25)%30 + 19 * ($jb%19))%30;

    if ($d==29)
    {
        $D=28;
    }
    elseif($d==28 && ($jb%17)>=11)
    {
        $D=27;
    }
    else $D=$d;   

    $e=(2 * ($jb%4) + 4 *($jb%7) + 6 * $D + (6 + $jb/100 - $jb/400 - 2)%7)%7;

    $ostersonntag=$e+$D+1+$maerz21;
    return $ostersonntag;
}
phpuser
08-Nov-2004 08:17
The algorithm from Bigtree is correct if you add some (int) cast
<?php
  
function easter_date ($Year) {
  
      
/*
       G is the Golden Number-1
       H is 23-Epact (modulo 30)
       I is the number of days from 21 March to the Paschal full moon
       J is the weekday for the Paschal full moon (0=Sunday,
         1=Monday, etc.)
       L is the number of days from 21 March to the Sunday on or before
         the Paschal full moon (a number between -6 and 28)
       */
      

        
$G = $Year % 19;
        
$C = (int)($Year / 100);
        
$H = (int)($C - (int)($C / 4) - (int)((8*$C+13) / 25) + 19*$G + 15) % 30;
        
$I = (int)$H - (int)($H / 28)*(1 - (int)($H / 28)*(int)(29 / ($H + 1))*((int)(21 - $G) / 11));
        
$J = ($Year + (int)($Year/4) + $I + 2 - $C + (int)($C/4)) % 7;
        
$L = $I - $J;
        
$m = 3 + (int)(($L + 40) / 44);
        
$d = $L + 28 - 31 * ((int)($m / 4));
        
$y = $Year;
        
$E = mktime(0,0,0, $m, $d, $y);

         return
$E;

   }
?>
ray at non-aol dot com
07-Nov-2004 04:49
The algorithm from BigTree will throw an error in 2021 and 2025.  Better to install the PHP functions!  Details here:

http://aa.usno.navy.mil/faq/docs/easter.html
bigtree at 29a dot DONTSPAM dot nl
17-May-2002 08:41
A much smaller hack is the following. I ported this from a Delphi implementation of a function calculating easter dates.

<?php
   
function easter_date ($Year) {
   
       
/*
        G is the Golden Number-1
        H is 23-Epact (modulo 30)
        I is the number of days from 21 March to the Paschal full moon
        J is the weekday for the Paschal full moon (0=Sunday,
          1=Monday, etc.)
        L is the number of days from 21 March to the Sunday on or before
          the Paschal full moon (a number between -6 and 28)
        */
       

         
$G = $Year % 19;
         
$C = (int)($Year / 100);
         
$H = (int)($C - ($C / 4) - ((8*$C+13) / 25) + 19*$G + 15) % 30;
         
$I = (int)$H - (int)($H / 28)*(1 - (int)($H / 28)*(int)(29 / ($H + 1))*((int)(21 - $G) / 11));
         
$J = ($Year + (int)($Year/4) + $I + 2 - $C + (int)($C/4)) % 7;
         
$L = $I - $J;
         
$m = 3 + (int)(($L + 40) / 44);
         
$d = $L + 28 - 31 * ((int)($m / 4));
         
$y = $Year;
         
$E = mktime(0,0,0, $m, $d, $y);

          return
$E;

    }
?>

easter_days> <cal_to_jd
Last updated: Fri, 11 Apr 2008
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites