paint-brush
Időadat-sorozat: A történet további részének folytatásaáltal@leonadato
338 olvasmányok
338 olvasmányok

Időadat-sorozat: A történet további részének folytatása

által Leon Adato7m2024/10/08
Read on Terminal Reader

Túl hosszú; Olvasni

Az utolsó blogbejegyzésben elmagyaráztam, hogyan kell telepíteni és elkezdeni a PHP Zmanim könyvtárat. A következőben a bonyolultabb idők kiszámításába, és az eszköz valódi erejébe ástam bele – a legelterjedtebb rabbinikus véleményeket alkalmazva a különböző zmanimokra. Minimális átfedéssel ott folytatom, ahol abbahagytam, így ha kell egy percet szánni, hogy újra felgyorsuljon, akkor az előző bejegyzések be vannak linkelve.
featured image - Időadat-sorozat: A történet további részének folytatása
Leon Adato HackerNoon profile picture

Már egy ideje nem írtam a PHP Zmanimról – a vele végzett munkáról és a megvalósítás során tanult dolgokról. De a késés ellenére mindig folytatni akartam a beszélgetést. Ma ezt csináljuk.


Az első bejegyzésemben elmagyaráztam, hogyan kell telepíteni és elkezdeni a PHP Zmanim könyvtárat. Majd a következő bejegyzésben beleástam magam a bonyolultabb idők kiszámításába, és az eszköz valódi erejébe – a legáltalánosabb rabbinikus vélemények alkalmazásával a különféle zmanimokhoz. Ott folytatom, ahol abbahagytam, minimális átfedéssel, így ha egy percre van szüksége, hogy felgyorsuljon, linkeltem az előző bejegyzéseket.


A mai cél a PHP Zmanim olyan felhasználási területeinek feltárása, amelyek túlmutatnak a könyvtár viszonylag egyszerű használatán. Ez magában foglalja:

  • Szabványos idő felvétele és a zsinagóga-specifikus használati esetekhez való igazítása („Mincha minden nap Shkia előtt 25 perccel kezdődik”).


  • PHP Zmanim könyvtári függvények és módszerek használata, amelyek nem időbeli számításokat biztosítanak – például a heti Tóra-rész, a héber dátum és az, hogy a megadott dátum ünnep-e (például Rosh Chodesh vagy Sukkot).

Köszönetnyilvánítás

Még egyszer azzal kell kezdenem, hogy kifejezem hálámat azoknak az embereknek, akik mindezt lehetővé tették. A nevek hosszú listája között mindenekelőtt Zachary Weixelbaum, magának a PHP Zmanim könyvtárnak a karbantartója, valamint Eliyahu Hershfeld, a PHP Zmanim alapját képező Kosher Java könyvtár alkotója.

Gyors frissítő

Amikor abbahagytuk, volt egy szilárd alap PHP szkriptünk, amely:

  • Beállítja a hely változóit (szélesség/hosszúság), valamint az időzónát és a magasságot.
  • Beállítja a dátumot
  • létrehoz egy PHP zmanim objektumot ezekből a változókból
  • a beépített módszerek segítségével kiszámítja az időt a napkeltétől a minchán át a tzeit hakochavimig


Így nézett ki:

 <?php require 'vendor/autoload.php'; use PhpZmanim\Zmanim; use PhpZmanim\Calendar\ComplexZmanimCalendar; use PhpZmanim\Geo\GeoLocation; # Set variables: $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"; ?>


De a napkelte csak a kezdet. A beépített számítások bármelyikével (amelyek leírása a GitHub readme oldalán található) a legkülönfélébb időkben lehívható. Például ahhoz, hogy Mincha Gedola egy konkrét rabbinikus véleményt használjon, a következőket tehetem:

 $gedolah = $zmanim->minchaGedola16Point1Degrees


Az utolsó blogban kitértem arra is, hogyan használhatjuk a PHP Zmanim formázási módszerét a kimenet olvashatóbbá tételére:

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

„Ízlés szerint só” – az idők beállítása

Azok számára, akik nem töltenek sok időt a zsinagógában (nem hibáztatni, nem szégyellni, még mindig szívesen látunk itt), ez talán nem egyértelmű, de – a zman neve ellenére – nagyon kevés szervezet imádkozik Minchához (délután). imák) Mincha Ketanában, Mincha Gedolában vagy Plag haMinchában.


Valójában az időszámítással kapcsolatos munka nagy része kevésbé kapcsolódik az egyenes „Mi az idő Mincha Gedola?” kérdéshez. és még több: „Milyen későre tudjuk ésszerűen ütemezni Minchát, hogy mindenkinek legyen ideje ideérni munka után; de nem OLYAN későn, hogy senki ne jöjjön el, mert lemarad a vacsoráról?


Ha ez túl elméleti, engedje meg, hogy megosszam azt a logikai jenga-rejtvényt, amelyet a zsinagógám figyelembe vesz a heti menetrend felállításakor:

  • Péntek esti gyertyagyújtás: Shkia (naplemente) mínusz 18 perc
  • Nyári péntek Mincha: Plag haMincha (a „plagHaminchaAteretTorah” használatával) mínusz 20 perc
  • Téli péntek Mincha: Shkia (naplemente) mínusz 22 perc
  • Szombat Mincha: Shkia mínusz 40 perc
  • Szombat Ma'ariv: Shkia plusz 50 perc
  • Szombat vége: Shkia plusz 45 perc
  • Weekday Mincha: keresse meg a hét legkorábbi shkiáját, majd vonjon le 17 percet


Bár az összes többi alkalom, amelyről a korábbi blogokban beszéltem, továbbra is számít, remélhetőleg kezdi felismerni, hogy ezek ritkábban számítanak, mint azt várnánk.


Tehát hogyan kell időt (például shkia/sunset), majd hozzáadni vagy kivonni perceket? Ugyanazzal a szkripttel kezdjük, mint korábban:

 <?php require 'vendor/autoload.php'; use PhpZmanim\Zmanim; use PhpZmanim\Calendar\ComplexZmanimCalendar; use PhpZmanim\Geo\GeoLocation; # Set variables: $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);


Ehhez hozzáadjuk a naplemente lekéréséhez szükséges kódot:

 $sunset = $zmanim->sunset;


Ezután levonjuk a 18 percet, hogy megkapjuk a gyertyagyújtási időt:

 $candles = date('g:i a', strtotime($sunset . " -18 minutes"));


így van. Csak használja a PHP saját string-to-time függvényét. Sajnálom, ha bizonytalanságban tartottalak. De ez tényleg ilyen egyszerű.

Mi az a Tóra-rész? Mi a héber dátum? Mikor van Rosh Chodesh?

(…és más lényeges, de bosszantó kérdések, amelyeket gyakran feltesznek a zsinagógában és környékén.)


A dátumszámítások mellett a KosherJava könyvtár (és így a PHP Zmanim könyvtár) olyan módszereket és funkciókat is tartalmaz, amelyekkel gyorsan szolgáltathat információkat, mint amilyeneket fent kérdeztünk.


Az első dolog, amit meg kell érteni, hogy a PHP Zmanim objektum, amellyel eddig dolgoztunk, egy Zmanim objektum volt – egy olyan objektum, amelynek meghatározott időpontjai vannak egy adott dátumhoz. Magukat a dátumokat tartalmazó dolgoknál egy jewishCalendar objektumot készítünk. A jó hír az, hogy SOKKAL könnyebb létrehozni. Csak az évre, hónapra és napra van szüksége.

 <?php require 'vendor/autoload.php'; use PhpZmanim\Zmanim; use PhpZmanim\Calendar\ComplexZmanimCalendar; use PhpZmanim\Geo\GeoLocation; # Set variables: $getyear = 2024; $getday = 21; $getmonth = 09; $jewishCalendar = Zmanim::jewishCalendar(Carbon::createFromDate($getyear, $getmonth, $getday));


Most már van egy jewishCalendar objektum, amellyel dolgozhatunk, és hasonló módszereket használhatunk, mint amilyeneket régen találtunk. Például: Feltételezve, hogy a kiválasztott dátum szombat volt, megkaphatjuk a Tóra részt:

 $format = Zmanim::format(); $parshaeng = json_decode('"' . $format->formatParsha($jewishCalendar) . '"');


(Egyelőre figyelmen kívül hagyja a $formátum beállítást. Egy kicsit beleásunk).


Ha lefuttatta ezt a kódot, a $parshaeng a következőket adná:

 Parshas Ki Savo


Észre fogja venni, hogy nem kellett megadnunk a szélességi, hosszúsági fokokat, időzónát stb. Nem tudom eléggé hangsúlyozni, hogy ez a képesség önmagában – a dátumok, a Tóra-részletek és egyebek lekérése – hasznossá teszi a PHP Zmanim könyvtárát. saját, időszámítások nélkül is.

Megkaphatom héberül?

A Tóra-rész? Természetesen! Itt jön be a $formátum sor.


Először is, annak magyarázata, hogy mi ez: Ez egy olyan módszer, amely módosítja az olyan objektumokat, mint a Zmanim és a jewishCalendar, beállítva a megjelenítési és kimeneti beállításokat. A Zmanim::format() beállítása minden egyéb információ nélkül az alapértelmezett angol. De akkor megmondhatja a rendszernek, hogy héberül akarja használni ezt a további sort:

 $format->setHebrewFormat(true)


Most, ha ugyanazt a json_decode('”' . $format->formatParsha($jewishCalendar) . '”') sort futtatja, a következőt kapja:

 כי תבוא


Az egészet összerakva:

 <?php require 'vendor/autoload.php'; use PhpZmanim\Zmanim; use PhpZmanim\Calendar\ComplexZmanimCalendar; use PhpZmanim\Geo\GeoLocation; # Set variables: $getyear = 2024; $getday = 21; $getmonth = 09; $jewishCalendar = Zmanim::jewishCalendar(Carbon::createFromDate($getyear, $getmonth, $getday)); $format = Zmanim::format(); $parshaeng = json_decode('"' . $format->formatParsha($jewishCalendar) . '"'); $format->setHebrewFormat(true); $parshaheb = json_decode('"' . $format->formatParsha($jewishCalendar) . '"'); echo "$parshaheb - $parshaeng\n";


Ez a következőt jelenné meg: כי תבוא – Ki Savo

Milyen nap van?

Pontosabban, milyen HÉBER nap van?


Az előző példához hasonlóan egy jewishCalendar-rel és egy formátumobjektummal kezdjük.

 $jewishCalendar = Zmanim::jewishCalendar(Carbon::createFromDate($theyear, $themonth, $theday)); $format = Zmanim::format();


Ezután hozzáadjuk ugyanazt a sort, hogy a formátumot héberre állítsuk.

 $format->setHebrewFormat(true);


És végül (és meglehetősen egyszerűen) egy egyenes naptárobjektum kimenetet kérünk:

 $zmandate = json_decode('"' . $format->format($jewishCalendar) . '"');


Szó szerint ez minden, amire szüksége van. Az eredmény valami ilyesmi:

 17 Elul, 5784


Igen, bár megadtuk a setHebrewFormat-ot, angolul jelent meg.

Megkaphatom ezt VALÓDOS héberül?

Annak érdekében, hogy a héber dátum teljes mértékben megjelenjen héberül – mind szavakkal, mind betűkkel – egy kissé eltérő módszert hívunk, amelyet megfelelő módon HebrewDateFormatternek hívnak. Feltételezve (még egyszer), hogy beállította a kezdeti változókat, és létrehozta a jewishCalendar objektumot, a héber nyelvű dátum kimeneti kódja a következő lenne:

 $hebformat = HebrewDateFormatter::create(); $hebformat->setHebrewFormat(true); $hebdate = json_decode('"' . $hebformat->format($jewishCalendar) . '"'); print("Hebrew date: $hebdate\n");


Ami adná neked:

 Hebrew date: י״ח אלול תשפ״ד

Ma van a nap?

Néha ellenőriznie kell, hogy egy adott dátum-e… nos, egy adott nap. Mint Rosh Chodesh (az új hónap) vagy egy többnapos ünnep része (például Sukkot).


Kiderült, hogy a PHP Zmanim metódus ezt nagyon egyszerűvé teszi. Feltételezve, hogy ugyanúgy kezdted, mint a többi példát,

Miután beállította a jewishCalendar objektumot, ez olyan egyszerű

 $jewishCalendar->isRoshHashana(); $jewishCalendar->isSuccos();


Ha a dátum megegyezik az ünnepnappal, akkor az „igaz” értéket adja vissza, és bármilyen logikával vagy folyamattal folytathatja, például megjelenítheti a dátumot (vagy nem).

Szóval mi következik?

Akár hiszi, akár nem, még mindig van mit fedezni. Az elkövetkező hetekben, amikor rátérek, szeretném bemutatni a beépített csillagászati funkciók kihasználásának módjait az időszámításokhoz. Akár hiszi, akár nem, nagyon fontos lehet, hogy valóban pontos időpontokat határozzon meg olyan dolgokra, mint például a sabbat és az ünnepek kezdete és vége, valamint más ünnepségek.


Addig is, ha van még valami, amit szeretnél látni, ahogy fedezem; vagy ha kérdései, javításai vagy dicséretei vannak, nyugodtan hagyja őket az alábbi megjegyzésekben.