To compute the correct Easter date for Eastern Orthodox Churches I made a function based on the Meeus Julian algorithm:
<?php
function orthodox_eastern($year) {
$a = $year % 4;
$b = $year % 7;
$c = $year % 19;
$d = (19 * $c + 15) % 30;
$e = (2 * $a + 4 * $b - $d + 34) % 7;
$month = floor(($d + $e + 114) / 31);
$day = (($d + $e + 114) % 31) + 1;
$de = mktime(0, 0, 0, $month, $day + 13, $year);
return $de;
}
?>
easter_date
(PHP 4, PHP 5)
easter_date — Verilen yıl için paskalya gece yarısının unix zaman damgasını döner
Açıklama
Verilen yıl için paskalya gece yarısının unix zaman damgasını döner.
Bu işlev, yıl unix zaman damgasının geçerli olduğu aralık dışında (1970'den önce 2037'den sonra) verilirse bir uyarı üretir.
Paskalya günü, ilk olarak M.S. 325 yılında İznik Konseyi tarafından, İlk dolunaydan veya Bahar ılımından (ekinoks) sonraki ilk pazar günü olarak tanımlanmıştır. Ilımın daima 21 Mart tarihine rastladığı varsayılır ve hesaplama dolunayın ve sonraki pazar gününün hesaplanmasına indirgenir. Kullanılan algoritma Dionysius Exiguus tarafından 532 yılında tanıtıldı. Jülyen takvimi döneminde (1753'den önceki yıllar) ayın evrelerini takip etmek için basit 19 yıllık çevrim kullanıldı. Gregoryen takvimi döneminde (1753'den sonraki yıllar - Clavius ve Lilius tarafından hazırlandı ve XIII Papa Gregory tarafından Ekim 1582'de tanıtıldı, Eylül 1752'de Britanya ve kolonilerine yayıldı) çevrimin daha doğru olması için 2 düzeltme değişkeni eklendi.
(Simon Kershaw tarafından yazılan C programı temel alınmıştır, <webmaster at ely.anglican dot org>)
Değiştirgeler
- yil
-
1970-2037 aralığındaki değerlerden biri.
Dönen Değerler
Unix zaman damgası olarak paskalya günü.
Sürüm Bilgisi
| Sürüm: | Açıklama |
|---|---|
| 4.3.0 sürümünden beri | yil değiştirgesi seçime bağlıdır, ihmal edilirse, öntanımlı olarak yerel zamanda, içinde bulunulan yıla eşittir. |
Örnekler
Örnek 1 easter_date() örneği
<?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
?>
Ayrıca Bakınız
- 1970'den önce veya 2037'den sonraki Paskalya günleri için easter_days() - Verilen yıl için Paskalya zamanına, 21 Marttan sonraki kalan gün sayısını verir.
easter_date
12-Jun-2008 08:36
28-Jan-2008 11:50
v5.2.1 - There is a known bug with easter_date() that can return incorrect dates for some years:
<?php
// 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:
<?php
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.
I made the function like this ... works fine !
<?php
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;
}
?>
08-Nov-2004 04: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;
}
?>
