paint-brush
Tidsdataserie: Fortsätter resten av berättelsenförbi@leonadato
350 avläsningar
350 avläsningar

Tidsdataserie: Fortsätter resten av berättelsen

förbi Leon Adato7m2024/10/08
Read on Terminal Reader

För länge; Att läsa

I det förra blogginlägget förklarade jag hur man installerar och kommer igång med PHP Zmanim-biblioteket. I nästa grävde jag på att beräkna mer komplexa tider och verktygets verkliga kraft – att tillämpa de vanligaste rabbinernas åsikter för olika zmanim. Jag fortsätter där jag slutade med minimal överlappning, så om du behöver ta en minut för att komma igång igen är de tidigare inläggen länkade.
featured image - Tidsdataserie: Fortsätter resten av berättelsen
Leon Adato HackerNoon profile picture

Det var ett tag sedan jag skrev om PHP Zmanim – arbetet jag har gjort med det och de saker jag har lärt mig när jag implementerade det. Men trots förseningen tänkte jag alltid fortsätta samtalet. Det är vad vi gör idag.


I mittförsta inlägg förklarade jag hur man installerar och kommer igång med PHP Zmanim-biblioteket. Sedan, i nästa inlägg , grävde jag ner mig i att beräkna mer komplexa tider och verktygets verkliga kraft – att tillämpa de vanligaste rabbinska åsikterna för olika zmanim. Jag fortsätter där jag slutade med minimal överlappning, så om du behöver ta en minut för att komma igång igen, har jag länkat till de tidigare inläggen.


Målet idag är att utforska användningar av PHP Zmanim som går bortom den relativt enkla användningen av biblioteket. Det inkluderar:

  • Att ta en standardtid och anpassa den för synagoganspecifika användningsfall ("Mincha börjar 25 minuter före Shkia varje dag").


  • Använder PHP Zmanim biblioteksfunktioner och metoder som ger icke-tidsberäkningar – som veckovis Torah Portion, det hebreiska datumet och om ett angivet datum är en helgdag (som Rosh Chodesh eller Sukkot).

Erkännanden

Återigen, måste börja med att uttrycka min tacksamhet till folket som gjorde allt detta möjligt. Främst, bland en lång lista med namn är Zachary Weixelbaum, underhållaren av PHP Zmanim-biblioteket självt, och Eliyahu Hershfeld: skaparen av Kosher Java-biblioteket som PHP Zmanim är baserat på.

En snabb uppfräschning

När vi slutade hade vi ett solidt grundläggande PHP-skript som:

  • Ställer in variabler för platsen (i latitud/longitud), tillsammans med tidszon och höjd.
  • Ställer in datumet
  • skapar ett PHP zmanim-objekt från dessa variabler
  • använder de inbyggda metoderna för att beräkna tiden för allt från soluppgång till mincha till tzeit hakochavim


Det såg ut så här:

 <?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"; ?>


Men soluppgången är bara början. Genom att använda någon av de inbyggda beräkningarna (som beskrivs på GitHub readme-sidan ), kan du dra en mängd olika gånger. Till exempel, för att få Mincha Gedola att använda en specifik rabbinsk åsikt, skulle jag kunna inkludera:

 $gedolah = $zmanim->minchaGedola16Point1Degrees


I den förra bloggen behandlade jag också sätt att använda PHP Zmanims formatmetod för att göra utdata mer läsbara:

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

"Salt efter smak" - Justera tider

För dem som inte tillbringar mycket tid i synagogan (ingen skuld, ingen skam, du är fortfarande välkommen hit) kanske det inte är självklart, men – trots namnet på zman – väldigt få organisationer ber Mincha (eftermiddag). böner) vid Mincha Ketana, Mincha Gedola eller Plag haMincha.


Faktum är att mycket av arbetet med att beräkna tider har mindre att göra med det raka "Vad är klockan Mincha Gedola?" och mer med ”Hur sent på dagen kan vi rimligen schemalägga Mincha så att alla hinner komma hit efter jobbet; men inte SÅ sent att ingen kommer för att de kommer att missa middagen?”


Om det är för teoretiskt, låt mig dela det logiska jenga-pusslet som min synagoga överväger när jag ställer upp veckoschemat:

  • Fredag kväll ljuständning: Shkia (solnedgång) minus 18 minuter
  • Sommarfredag Mincha: Plag haMincha (med "plagHaminchaAteretTorah") minus 20 minuter
  • Vinterfredag Mincha: Shkia (solnedgång) minus 22 minuter
  • Lördag Mincha: Shkia minus 40 minuter
  • Lördag Ma'ariv: Shkia plus 50 minuter
  • Lördag slutet av sabbaten: Shkia plus 45 minuter
  • Weekday Mincha: hitta den tidigaste shkia för veckan, subtrahera sedan 17 minuter


Medan alla andra gånger som jag diskuterade i tidigare bloggar fortfarande spelar roll, börjar du förhoppningsvis inse att de betyder mindre ofta än man kan förvänta sig.


Så hur tar man en tid (som shkia/solnedgång) och sedan lägger till eller subtraherar minuter? Vi börjar med samma manus som vi hade tidigare:

 <?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);


Till det lägger vi till koden för att få solnedgång:

 $sunset = $zmanim->sunset;


Och sedan drar vi av 18 minuter för att få ljuständningstid:

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


Det stämmer. Du använder bara PHPs egen sträng-till-tid-funktion. Jag är ledsen om jag höll dig i spänning. Men det är egentligen bara så enkelt.

Vad är Torah-delen? Vad är det hebreiska datumet? När är Rosh Chodesh?

(...och andra viktiga men irriterande frågor som ofta ställs i och runt din synagoga.)


Tillsammans med datumberäkningar har KosherJava-biblioteket (och därför PHP Zmanim-biblioteket) metoder och funktioner för att snabbt tillhandahålla information som de som ställs ovan.


Det första att förstå är att PHP Zmanim-objektet vi har arbetat med hittills har varit ett Zmanim-objekt – ett objekt som har en uppsättning specifika tider för ett visst datum. För saker som involverar själva datumen instansierar vi ett jewishCalendar-objekt. Den goda nyheten är att det är MYCKET lättare att skapa. Allt du behöver är år, månad och dag.

 <?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));


Vi har nu ett jewishCalendar-objekt att arbeta med och kan använda metoder som liknar de vi hittade för tider. Till exempel: Om vi antar att datumet vi valde var en lördag, kan vi få Torah-delen:

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


(Ignorera $format-inställningen för tillfället. Vi ska gräva i det om en liten stund).


Om du körde den koden skulle $parshaeng ge dig:

 Parshas Ki Savo


Du kommer att märka att vi inte behövde tillhandahålla latitud, longitud, tidszon, etc. Jag kan inte nog betona att denna förmåga ensam – möjligheten att få datum, Torah-delar och mer – gör PHP Zmanim-biblioteket användbart i sin helhet. egna, även utan tidsberäkningarna.

Kan jag få det på hebreiska?

Toradelen? Naturligtvis! Det är här $format-raden kommer in.


Först, en förklaring av vad det är: Det är en metod som modifierar objekt som Zmanim och jewishCalendar, ställer in visnings- och utdataalternativ. Att ställa in Zmanim::format() utan någon annan information är standard på engelska. Men sedan kan du tala om för systemet att du vill ha hebreiska med denna extra rad:

 $format->setHebrewFormat(true)


Om du nu kör samma json_decode('”' . $format->formatParsha($jewishCalendar) . '”') rad, skulle du få:

 כי תבוא


Att lägga ihop allt:

 <?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";


Detta skulle visa: כי תבוא – Ki Savo

Vilken dag är det?

Mer specifikt, vilken HEBRISK dag är det?


Liksom föregående exempel börjar vi med en jewishCalendar och ett formatobjekt.

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


Sedan lägger vi till samma rad för att ställa in formatet till hebreiska.

 $format->setHebrewFormat(true);


Och slutligen (och ganska enkelt), ber vi om en rak kalenderobjektutmatning:

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


Det är bokstavligen allt du behöver. Resultatet är ungefär så här:

 17 Elul, 5784


Ja, även om vi angav setHebrewFormat kom det ut på engelska.

Kan jag få det på VERKLIG hebreiska?

För att få det hebreiska datumet att visas fullt ut på hebreiska – både ord och bokstäver – använder vi en något annorlunda metod som, lämpligt nog, kallas HebrewDateFormatter. Om du (återigen) ställer in dina initiala variabler och skapade ett jewishCalendar-objekt, skulle koden för att mata ut ett hebreiskt språkdatum vara:

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


Vilket skulle ge dig:

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

Är dagen idag?

Ibland måste du kontrollera om ett specifikt datum är … ja, en specifik dag. Som Rosh Chodesh (den nya månaden) eller en del av en flerdagars semester (som Sukkot).


Det visar sig att PHP Zmanim-metoden gör detta väldigt enkelt. Förutsatt att du har börjat på samma sätt som de andra exemplen,

när du väl har ställt in objektet jewishCalendar är det så enkelt som

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


Om datumet stämmer överens med helgdagen kommer det att returnera "sant" och du kan fortsätta med vilken logik eller process du vill, som att visa datumet (eller inte).

Så vad är nästa?

Tro det eller ej, det finns fortfarande mer att täcka. Under de kommande veckorna när jag kommer till det, skulle jag vilja ta upp sätt att utnyttja de inbyggda astronomifunktionerna för tidsberäkningar. Tro det eller ej, det kan verkligen spela någon roll när det gäller att ha riktigt exakta tider för saker som början och slutet av sabbat och helgdagar, tillsammans med andra högtider.


Under tiden, om det är något annat du skulle vilja se mig täcka; eller om du har frågor, korrigeringar eller beröm, lämna dem gärna i kommentarerna nedan.

L O A D I N G
. . . comments & more!

About Author

Leon Adato HackerNoon profile picture
Leon Adato@leonadato
Leon has been a speaker and blogger in the monitoring and observability space for almost a decade.

HÄNG TAGGAR

DENNA ARTIKEL PRESENTERAS I...