Сегодня на работе понадобился этот код. В гугле нашел только для дельфи. Используя http://ru.wikipedia.org/wiki/Пасха написал этот алгоритм на ActionScript. Перевести его на PHP, C++, C# не составить труда думаю никому… Так что если кому надо — юзайте. Лицензия — все абсолютно free и без гарантий ;)
function makeEaste(year) { a = (19*(year%19) + 15) % 30; b = ((2*(year%4) + 4*(year%7) + 6*a + 6) % 7); if(a + b > 10) p = new Date(year, 3, a + b - 9, 0, 0, 0, 0); else p = new Date(year, 2, 22 + a + b, 0, 0, 0, 0); p.setDate(p.getDate()+13); return p; }
Так как на 10й день после пасхи идет Радоница, получить ее дату можно так: p = makeEaste(year); p.setDate(p.getDate()+9);
З.Ы. Я не AS программер, так что если какие глупые ошибки в коде — не серчайте.
Update. Код на JavaScript:
function makeEaste(year) { var a = (19*(year%19) + 15) % 30; var b = ((2*(year%4) + 4*(year%7) + 6*a + 6) % 7); if(a + b > 10) var p = new Date(year, 3, a + b - 9, 0, 0, 0, 0); else p = new Date(year, 2, 22 + a + b, 0, 0, 0, 0); p.setDate(p.getDate()+13); return p; }
Код на PHP:
function makeEaste($year) { $a = (19*($year%19) + 15) % 30; $b = ((2*($year%4) + 4*($year%7) + 6*$a + 6) % 7); $p = new DateTime(); if($a + $b > 10) $p->setDate($year, 4, $a + $b - 9); else $p->setDate($year, 3, 22 + $a + b); $p->modify("+13 day"); return $p; }