Cybermon – Obliczanie daty Wielkanocy

Witam po świętach. Mam nadzieję że wszyscy odpoczęli i z pełnymi brzuchami usiedli dziś do pracy :) A więc zaczynamy trochę świątecznie. Czy spotkaliście się z sytuacją, że tuż przed świętami, dzwoni klient i prosi o zamieszczenie świątecznej kartki na swojej stronie?  O ile Boże Narodzenie wypada zawsze 24 grudnia, to  Wielkanoc jest świętem ruchomym i każdego roku wypada inaczej.  Na stronie Cybermoon poświęconym astronomii znalazłem algorytm obliczania dni wielkanocnych w zależności od roku.  W prawdzie algorytm jest napisany z Turbo Pascalu, ale algorytm to zawsze algorytm i może zmieniać swój „stan kodowania” :). Poniżej prezentuje swoją wersje napisana w javascript.

var Today = new Date()
var Day = Today.getDate()
var Month = Today.getMonth()
var y=Today.getFullYear();

var a,c,d,e,f,g,h,i,k,l,m,n,p,b;

if ((Month+1 == 12) && (Day>=6) && (Day<=26)){

// tu wpisać to co ma się wy wyświetlać w Boże Narodzenia. Algorytm zaczyna działać troszkę wcześniej.	

} else if ((Month+1 == 3) || (Month+1 == 4) ) {

a= y % 19;
b= Math.round(Math.floor(y/100));
c= y % 100;
d= Math.round(Math.floor(b/4));
e= b % 4;
f= Math.round(Math.floor((b+8)/25));
g= Math.round(Math.floor((b-f+1)/3));
h= (19*a+b-d-g+15) % 30;
i= Math.round(Math.floor(c/4));
k= c % 4;
l= (32+2*e+2*i-h-k) % 7;
m= Math.round(Math.floor((a+11*h+22*l)/451));
n= Math.round(Math.floor((h+l-7*m+114)/31));
p= (h+l-7*m+114) % 31;
p= Math.round(p+1);

if ((((n==4) && (Month+1 == 4)) || ((n!==4) && (Month+1 == 3))) && (Day>=p-14 && Day<=p+1  )) {

// tu wpisać to co ma się wy wyświetlać w Wielkanoc.

}

}

Link: http://cybermoon.w.interia.pl/wiedza/algorithms/wielkanoc.htm

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Connect with Facebook

Możesz użyć następujących tagów oraz atrybutów HTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>