Serie danych czasowych: Praca z PHP Zmanim

Ten post kontynuuje moją eksplorację pojęć i technik związanych zarówno ze sposobem obliczania tak zwanych “żydowskich czasów” (zmanim), jak i technik potrzebnych do korzystania z PHP Zmanim. Biblioteka PHP Zmanim – biblioteka funkcji pozwalających na łatwe obliczanie czasu żydowskiego. Po raz kolejny mam ogromny dług wdzięczności wobec kilku osób – w tym Eliyahu Hershfelda, twórcy biblioteki Koszerna biblioteka JavaZachary Weixelbaum (właściciel biblioteki PHP Zmanim, będącej portem Kosher Java), Elyahu Jacobi (który zbudował bibliotekę RoyZmanim.com z tymi narzędziami i cierpliwie wyjaśnił mi tak wiele koncepcji) oraz Maor Neim, który zaoferował wyjaśnienia, które przekształciły teorię w praktykę.

Wprowadzenie

W moim ostatnim poście, omówiłem zarówno podstawowe koncepcje obliczania czasu żydowskiego (zmanim), jak i wstępne kroki potrzebne do zainstalowania i używania PHP Zmanim. Doszliśmy aż do obliczania wschodu słońca za pomocą tej biblioteki.

Samo w sobie nie jest to szczególnie imponujące. Faktem jest, że mając te same informacje (szerokość i długość geograficzną, strefę czasową i konkretną datę) można uzyskać te same informacje za pomocą wbudowanych funkcji PHP.

W tym poście zajmiemy się typami obliczeń, których NIE MOŻNA uzyskać za pomocą wbudowanych narzędzi PHP, nie tylko dlatego, że wymagają one “interesujących” manipulacji czasem, ale dlatego, że istnieje tak wiele sposobów obliczania tego samego religijnie znaczącego momentu, w oparciu o różne opinie i tradycje rabiniczne.

Odpowiedź na każde żydowskie pytanie zaczyna się od “Cóż, to zależy…”

Proszę pozwolić mi poświęcić chwilę na bardziej szczegółowe omówienie tego pomysłu.

W ostatnim poście zacząłem zagłębiać się w ten pomysł:

Świt to moment, w którym światło (ale nie słońce) jest widoczne nad horyzontem. Niestety to, czy “światło” jest, czy go nie ma, jest wysoce subiektywne, a zatem sposób jego obliczania waha się po całej mapie.

  • Niektóre tradycje używają stałej liczby minut zegarowych przed wschodem lub po zachodzie słońca.
  • Inne wykorzystują astronomię do określenia czasu, w którym słońce znajduje się poniżej horyzontu o określoną liczbę stopni.
  • Inni użyją wzoru, na przykład biorąc ilość światła dziennego (od wschodu do zachodu słońca), dzieląc ją na 10 równych części, a następnie odejmując tę ilość od wschodu słońca lub dodając ją do zachodu słońca.
  • Jeszcze inni biorą czas, w którym słońce znajduje się pod horyzontem w “równy” dzień (co oznacza równonoc wiosenną lub jesienną, kiedy ilość słońca i ciemności są dokładnie takie same), obliczają różnicę (w minutach zegarowych) między tym czasem a wschodem słońca, normalizują te minuty w stosunku do “minut sezonowych” (“sha’ot zmaniyot”) dla danego dnia, a na koniec odejmują tę kwotę od wschodu słońca (lub dodają THAT do zachodu słońca) dla danego dnia.

Jeden moment dnia, ale wiele różnych sposobów na jego określenie.

Może to być trudne do zrozumienia dla osób spoza głównego nurtu ortodoksyjnego judaizmu i zdecydowanie jest to temat na zupełnie inny rodzaj wpisu na blogu, ale odpowiedzią jest zrozumienie, że wszystkie powyższe obliczenia (i wiele innych) są “Prawdą” z dużej litery. Nie tylko w rodzaju “cóż, tak to czuję, więc jest to dla mnie prawdziwe”, ale jako absolutnie, faktycznie, empirycznie prawdziwe, nawet jeśli jedna metoda stoi w opozycji do innej (lub kilku innych).

Jak już wspomniałem, jest to temat na zupełnie inny wpis na blogu.

Na razie wspominam o tym, aby wyjaśnić, dlaczego podczas tworzenia Koszerna biblioteka JavaEliyahu Hershfeld obrał drogę umożliwienia łatwego obliczania czasów przy użyciu KAŻDEJ z tych metod, zamiast próbować popierać jedną metodę i kodować wyłącznie dla niej. A porty – takie jak Zachary Weixelbaum’s Biblioteka PHP Zmanim – proszę po prostu kontynuować ten ideał.

To prowadzi nas z powrotem do szczegółów korzystania z biblioteki PHP Zmanim.

Upiększanie czasu

W ostatnim poście, wyszliśmy z tym fragmentem kodu:

<?php
require 'vendor/autoload.php';
use PhpZmanim\Zmanim;
use PhpZmanim\Calendar\ComplexZmanimCalendar;
use PhpZmanim\Geo\GeoLocation;


# Set variables:
#41.4939407, -81.516709;
$locname = "Beit Knesset Chochmat Shlomo, Beachwood, OH";
$lat = 41.4939407;
$long = -81.516709;
$elev = 0;
$tz = 'America/New_York';

$getyear = 2024;
$getday = 20;
$getmonth = 12;
$testzmanim = Zmanim::create($getyear, $getmonth, $getday, $locname, $lat, $long, $elev, $tz);
$sunrise = $testzmanim->sunrise;
echo "$sunrise\n";
?>

Co dało wynik, który wyglądał mniej więcej tak:
2024-12-20 07:48:52

Działa, ale nie jest to coś, co chciałbym zobaczyć na stronie, gdy oczekuję prostego “7:48”.

To prowadzi mnie do kolejnego interesującego spostrzeżenia dla biblioteki PHP Zmanim: Można sformatować dane wyjściowe za pomocą innej funkcji, zamiast męczyć się z wbudowanymi opcjami PHP. Nadal będą Państwo używać funkcji Kody formatowania czasu/daty PHP ale uzyskanie tego, co Pan chce, jest łatwiejsze.

Powiedzmy, że chcę wyświetlać tylko godzinę, minutę i am/pm dla wyjścia wschodu słońca. Proszę dodać następujący wiersz:

$sunrise = $zmanim->sunrise;
$sunrise = $sunrise->format('g:i a');

Który wyglądałby tak po wydrukowaniu na ekranie:
7:48 am

Uzyskanie pierwszego rzeczywistego czasu rzeczywistego – Mincha Gedola

Problem z wykorzystaniem wschodu/zachodu słońca jako przykładu polega na tym, że PHP ma wbudowane opcje, aby zrobić dokładnie to samo. Spójrzmy więc na czas, który jest bardziej odpowiedni dla żydowskich czasów religijnych: najwcześniejszy czas na popołudniowe modlitwy (Mincha Gedola).

Ponownie, jest to nieco antyklimatyczne, ponieważ jest to pojedyncze polecenie:

$gedolah = $zmanim->minchaGedola;

Co daje taki czas:
2024-12-20 12:46:55

Jednak, jak wspomniałem wcześniej w tym poście, istnieje kilka sposobów obliczania tego czasu. Oto wszystkie metody obsługiwane przez bibliotekę PHP Zmanim:

  • minchaGedola: Zwraca czas 6,5 halachicznych godzin (shaos zmaniyos) po wschodzie słońca.
  • minchaGedola30Minutes: Zwraca czas 30 standardowych (zegarowych) minut po obliczeniu połowy dnia (chatzot).
  • minchaGedola72Minutes: Oblicza zgodnie z Magen Avraham (Abraham Abele Gombiner, 1635-1682) z dniem rozpoczynającym się 72 minuty przed wschodem słońca i kończącym się 72 minuty po zachodzie słońca.
  • minchaGedola16Point1Degrees: Obliczony zgodnie z Magen Avraham z dniem rozpoczynającym się i kończącym, gdy słońce znajduje się 16,1 stopnia poniżej horyzontu.
  • minchaGedolaAhavatShalom: Obliczono na podstawie opinii Rabin Yaakov Moshe Hillel jako pół sezonowej godziny (shaah) po południu (chatzos) z sezonowymi minutami (shaos zmaniyos) obliczonymi na podstawie dnia rozpoczynającego się 72 minuty przed wschodem słońca i kończącego się 13,5 minuty po zachodzie słońca.
  • minchaGedolaGreaterThan30: Jest to wygodna metoda, która zwraca późniejszą ze standardowych funkcji “minchaGedola” lub “minchaGedola30Minutes”. W zimie, gdy 1/2 godziny sezonowej (sha’ah) jest krótsza niż 30 minut, zwrócona zostanie funkcja minchaGedola30Minutes, w przeciwnym razie zwrócona zostanie zwykła funkcja minchaGedola.
  • minchaGedolaAteretTorah: Ta metoda zwraca czas mincha ketana według Magen Avraham z dniem rozpoczynającym się i kończącym, gdy słońce znajduje się 16,1 stopnia poniżej horyzontu.
  • minchaGedolaBaalHatanya: Obliczenia te opierają się na opinii Baal Hatanya
  • minchaGedolaBaalHatanyaGreaterThan30: Jest to wygodna metoda, która zwraca późniejszą z dwóch wartości: minchaGedolaBaalHatanya lub minchaGedola30Minutes. W zimie, gdy 1/2 godziny sezonowej (sza’ah) jest krótsza niż 30 minut, zwrócona zostanie minchaGedola30Minutes, w przeciwnym razie zwrócona zostanie minchaGedolaBaalHatanya.
  • minchaGedolaGRAFixedLocalChatzos30Minutes: Ta metoda zwraca czas oparty na Rav Moshe Feinstein’s opinia.

Jak widać, istnieje wiele opinii. Określenie, z której z nich chcą / muszą Państwo korzystać, wykracza poza zakres tego wpisu na blogu i prawdopodobnie będzie wymagało kilku rozmów z użytkownikami aplikacji lub strony internetowej, a także Rabbi. Lub dwoma. Albo kilku.

Ale dobra wiadomość jest taka, że aby użyć któregokolwiek z nich, jest to tak proste, jak:

$gedolah = $zmanim->minchaGedola16Point1Degrees;
$gedolah = $gedolah->format('g:i a');

Uzyskanie czegoś skomplikowanego – Nightfall (Tzais Hakochavim)

Teraz, gdy zobaczyli Państwo, jak uzyskujemy jeden czas, powinni Państwo zrozumieć, że nawet czasy, które mój poprzedni post określił jako “skomplikowane”, nie są aż tak skomplikowane. Co więcej, powinno to wzmocnić Państwa zrozumienie, jak potężnym narzędziem jest PHP Zmanim, ze względu na to, co pozwala zrobić w tak krótkim czasie.

Obliczenie zmroku (tzais hakochavim) jest tak proste, jak polecenie
$tzais = $zmanim->tzais;

Jeśli w ogóle istnieje jakieś wyzwanie, to jest nim sama liczba wariantów do rozważenia. Wymieniam je tutaj bez wyjaśnienia, aby mogli Państwo zrozumieć, ile ich jest. Zgadza się, istnieją 32 różne opcje obliczania tego jednego razu. Wymieniam je tutaj bez szczegółowego wyjaśnienia tylko po to, by podkreślić mój punkt widzenia:

  • tzais
  • tzais72
  • tzaisGeonim3Point7Degrees
  • tzaisGeonim3Point8Degrees
  • tzaisGeonim5Point95Degrees
  • tzaisGeonim3Point65Degrees
  • tzaisGeonim3Point676Degrees
  • tzaisGeonim4Point61Degrees
  • tzaisGeonim4Point37Degrees
  • tzaisGeonim5Point88Degrees
  • tzaisGeonim4Point8Degrees
  • tzaisGeonim6Point45Degrees
  • tzaisGeonim7Point083Degrees
  • tzaisGeonim7Point67Degrees
  • tzaisGeonim8Point5Degrees
  • tzaisGeonim9Point3Degrees
  • tzaisGeonim9Point75Degrees
  • tzais60
  • tzaisAteretTorah
  • tzais72Zmanis
  • tzais90Zmanis
  • tzais96Zmanis
  • tzais90
  • tzais120
  • tzais120Zmanis
  • tzais16Point1Degrees
  • tzais26Degrees
  • tzais18Degrees
  • tzais19Point8Degrees
  • tzais96
  • tzaisBaalHatanya
  • tzais50

Czas (i ta seria blogów) płynie naprzód

Uzbrojeni w informacje zawarte w tym poście, prawdopodobnie mogliby Państwo poczynić przyzwoite postępy po prostu przeglądając główne README na Zachary’s PHP Zmanim i wybranie najlepszych (dla Państwa celów) obliczeń dla:

  • Wschodu i zachodu słońca (nie, proszę nie śpiewać That Song)
  • Godzina “sezonowa” (Sha’ah Zmanim)
  • Świt (alos hashachar)
  • Najwcześniejszy czas na założenie tałesu i tefilin (misheyakir)
  • Najpóźniejszy czas odmawiania Shema (sof zman kria shema)
  • Najpóźniejszy czas na poranne modlitwy (sof zman tefillah)
  • Kiedy rozpoczyna się Pascha
  • W połowie dnia (chatzos)
  • Najwcześniejszy czas na modlitwy popołudniowe (mincha gedola)
  • “Najlepsza” pora na popołudniowe modlitwy (mincha ketana)
  • Najpóźniejszy czas na popołudniowe modlitwy (plag hamincha)
  • Czas zapalania świec szabatowych
  • Zmierzch – czas między zachodem słońca a nocą (bain hashmashot)
  • Noc (tzais hakochavim)
  • W połowie nocy (chatozs halayla)

Ale jest jeszcze więcej do omówienia. W nadchodzących artykułach opowiem o:

  • Przyjmując te standardowe czasy i dostosowując je do potrzeb specyficznych dla synagogi (“Mincha zaczyna się 25 minut przed Shkia każdego dnia”).
  • Korzystanie z biblioteki PHP Zmanim do wyświetlania obliczeń niezwiązanych z czasem, takich jak cotygodniowa porcja Tory, Rosz Chodesz i Molada.
  • Wykorzystanie wbudowanych funkcji astronomicznych do obliczeń czasu, które nie są wbudowane w samą bibliotekę.

Mam nadzieję, że będą Państwo kontynuować tę podróż razem ze mną. Jak zawsze, jeśli masz pytania, komentarze lub pochwały, proszę zostawić je w komentarzach.