wtorek,
PHP: Wyznaczanie daty Wielkanocy
W kościołach zachodnich Wielkanoc przypada w pierwszą niedzielę po pierwszej wiosennej pełni Księżyca (tzw. paschalna pełnia Księżyca) przypadającej po 21 marca, co oznacza, że Wielkanoc wypada pomiędzy 22 marca a 25 kwietnia. Co ciekawe, kościelna pełnia Księżyca różni się od astronomicznej, a jej daty zostały wyznaczone i stabelaryzowane w czasie Soboru Nicejskiego w 325 roku n.e. Nie wygląda to zbyt zachęcająco dla programisty postawionego przed zadaniem wyznaczenia daty Wielkanocy w danym roku.
Z pomocą może przyjść kilka istniejących algorytmów realizujących takie zadanie, jednak poznanie np. metody Gaussa na obliczenie tej daty i jej implementacja w języku PHP zajmie trochę czasu. Na szczęście istnieje fabryczna funkcja, która na podstawie roku ustali dokładną datę Wielkanocy. Funkcja easter_date() zwraca uniksowy znacznik czasu. Początkującemu programiście zwracana wartość reprezentująca liczbę sekund od początku 1970 roku UTC może wydawać się dziwna, jednak w połączeniu z innymi fabrycznymi funkcjami staje się niezwykle „plastyczna”. Przekonasz się o tym, analizując poniższe przykłady.
<?php
echo easter_date(2020); // 1586642400
echo date('Y-m-d H:i:s', easter_date(2020)); // 2020-04-12 00:00:00
echo date('Y-m-d', easter_date(2021)); // 2021-04-04
// poniedziałek wielkanocny
echo date('m-d', strtotime('+1 day', easter_date(2020))); // 04-13
// boże ciało
echo date('m-d', strtotime('+60 day', easter_date(2020))); // 06-11
?>