paint-brush
Série de données temporelles : suite de l'histoirepar@leonadato
338 lectures
338 lectures

Série de données temporelles : suite de l'histoire

par Leon Adato7m2024/10/08
Read on Terminal Reader

Trop long; Pour lire

Dans le dernier article de blog, j’ai expliqué comment installer et démarrer avec la bibliothèque PHP Zmanim. Dans le suivant, j’ai approfondi le calcul de temps plus complexes et la véritable puissance de l’outil : appliquer les opinions rabbiniques les plus courantes pour divers zmanim. Je reprends là où je m’étais arrêté avec un chevauchement minimal, donc si vous avez besoin de prendre une minute pour vous remettre à niveau, les articles précédents sont liés.
featured image - Série de données temporelles : suite de l'histoire
Leon Adato HackerNoon profile picture

Cela fait un moment que je n'ai pas écrit sur PHP Zmanim – le travail que j'ai fait avec lui et les choses que j'ai apprises en l'implémentant. Mais malgré le retard, j'ai toujours eu l'intention de poursuivre la conversation. C'est ce que nous faisons aujourd'hui.


Dans monpremier article , j'ai expliqué comment installer et démarrer avec la bibliothèque PHP Zmanim. Ensuite, dans l' article suivant , j'ai approfondi le calcul de temps plus complexes et la véritable puissance de l'outil : appliquer les opinions rabbiniques les plus courantes pour divers zmanim. Je reprends là où je m'étais arrêté avec un chevauchement minimal, donc si vous avez besoin de prendre une minute pour vous remettre à niveau, j'ai mis un lien vers ces articles précédents.


L'objectif d'aujourd'hui est d'explorer les utilisations de PHP Zmanim qui vont au-delà de l'utilisation relativement simple de la bibliothèque. Cela comprend :

  • Prendre une heure standard et l'ajuster aux cas d'utilisation spécifiques à la synagogue (« Mincha commence 25 minutes avant Shkia chaque jour »).


  • Utilisation des fonctions et méthodes de la bibliothèque PHP Zmanim qui fournissent des calculs non temporels – tels que la portion hebdomadaire de la Torah, la date hébraïque et si une date spécifiée est un jour férié (comme Rosh Chodesh ou Souccot).

Remerciements

Une fois encore, je dois commencer par exprimer ma gratitude aux personnes qui ont rendu tout cela possible. Parmi une longue liste de noms, citons Zachary Weixelbaum, le mainteneur de la bibliothèque PHP Zmanim elle-même, et Eliyahu Hershfeld : créateur de la bibliothèque Kosher Java sur laquelle PHP Zmanim est basé.

Un petit rappel

Lorsque nous nous sommes arrêtés, nous avions un script PHP de base solide qui :

  • Définit des variables pour l'emplacement (en latitude/longitude), ainsi que le fuseau horaire et l'altitude.
  • Définit la date
  • crée un objet PHP zmanim à partir de ces variables
  • utilise les méthodes intégrées pour calculer l'heure de tout, du lever du soleil à Minha jusqu'à Tzeit Hakochavim


Cela ressemblait à ceci :

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


Mais le lever du soleil n'est que le début. En utilisant l'un des calculs intégrés (qui sont décrits sur la page readme de GitHub ), vous pouvez extraire une grande variété d'heures. Par exemple, pour que Mincha Gedola utilise une opinion rabbinique spécifique, je pourrais inclure :

 $gedolah = $zmanim->minchaGedola16Point1Degrees


Dans le dernier blog, j'ai également abordé les moyens d'utiliser la méthode de formatage de PHP Zmanim pour rendre la sortie plus lisible :

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

« Du sel au goût » – Ajuster les horaires

Pour ceux qui ne passent pas beaucoup de temps à la synagogue (pas de blâme, pas de honte, vous êtes toujours le bienvenu ici), cela n'est peut-être pas évident, mais - malgré le nom du zman - très peu d'organisations prient Mincha (prières de l'après-midi) à Mincha Ketana, Mincha Gedola ou Plag haMincha.


En fait, une grande partie du travail de calcul des heures ne se résume pas à la simple question « À quelle heure est Mincha Gedola ? » mais plutôt à la question « À quelle heure pouvons-nous raisonnablement programmer Mincha pour que tout le monde ait le temps d'arriver après le travail, mais pas si tard que personne ne vienne parce qu'ils rateraient le dîner ? »


Si cela est trop théorique, permettez-moi de partager le puzzle logique Jenga que ma synagogue prend en compte lors de l'établissement du programme hebdomadaire :

  • Allumage des bougies vendredi soir : Shkia (coucher de soleil) moins 18 minutes
  • Minha du vendredi d'été : Plag haMincha (en utilisant « plagHaminchaAteretTorah ») moins 20 minutes
  • Vendredi d'hiver Mincha : Shkia (coucher de soleil) moins 22 minutes
  • Samedi Mincha : Shkia moins 40 minutes
  • Samedi Ma'ariv : Shkia plus 50 minutes
  • Samedi fin de Shabbat : Shkia plus 45 minutes
  • Mincha en semaine : trouvez le shkia le plus tôt de la semaine, puis soustrayez 17 minutes


Même si tous les autres moments que j’ai abordés dans des blogs précédents sont toujours importants, j’espère que vous commencez à réaliser qu’ils comptent moins souvent qu’on pourrait le penser.


Alors, comment prendre un temps (comme shkia/coucher de soleil) puis ajouter ou soustraire des minutes ? Nous commencerons avec le même script que nous avions auparavant :

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


À cela, nous ajouterons le code pour obtenir le coucher du soleil :

 $sunset = $zmanim->sunset;


Et puis, on soustrait 18 minutes pour obtenir le temps d'allumage des bougies :

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


C'est vrai. Il suffit d'utiliser la fonction string-to-time de PHP. Je suis désolé si je vous ai laissé en suspens. Mais c'est vraiment aussi simple que ça.

Quelle est la portion de la Torah ? Quelle est la date hébraïque ? Quand est Roch Hodech ?

(…et d’autres questions essentielles mais vexantes souvent posées dans et autour de votre synagogue.)


En plus des calculs de dates, la bibliothèque KosherJava (et donc la bibliothèque PHP Zmanim) dispose de méthodes et de fonctions permettant de fournir rapidement des informations comme celles demandées ci-dessus.


La première chose à comprendre est que l'objet PHP Zmanim avec lequel nous avons travaillé jusqu'à présent était un objet Zmanim - un objet qui possède un ensemble d'heures spécifiques pour une date particulière. Pour les choses impliquant les dates elles-mêmes, nous instancions un objet jewishCalendar. La bonne nouvelle est qu'il est BEAUCOUP plus facile à créer. Tout ce dont vous avez besoin, c'est de l'année, du mois et du jour.

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


Nous disposons désormais d'un objet jewishCalendar avec lequel travailler et pouvons utiliser des méthodes similaires à celles que nous avons trouvées pour les heures. Par exemple : en supposant que la date que nous avons sélectionnée était un samedi, nous pouvons obtenir la portion de la Torah :

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


(ignorez le paramètre $format pour l'instant. Nous l'examinerons dans un instant).


Si vous exécutiez ce code, $parshaeng vous donnerait :

 Parshas Ki Savo


Vous remarquerez que nous n'avons pas eu besoin de fournir la latitude, la longitude, le fuseau horaire, etc. Je ne saurais trop insister sur le fait que cette capacité à elle seule - la possibilité d'obtenir des dates, des portions de la Torah, etc. - rend la bibliothèque PHP Zmanim utile à elle seule, même sans les calculs de temps.

Puis-je l'obtenir en hébreu ?

La Paracha ? Bien sûr ! C'est là qu'intervient la ligne $format.


Tout d'abord, une explication de ce que c'est : c'est une méthode qui modifie des objets comme Zmanim et jewishCalendar, en définissant les options d'affichage et de sortie. La définition de Zmanim::format() sans aucune autre information revient par défaut à l'anglais. Mais vous pouvez ensuite indiquer au système que vous voulez l'hébreu avec cette ligne supplémentaire :

 $format->setHebrewFormat(true)


Maintenant, si vous exécutez la même ligne json_decode('”' . $format->formatParsha($jewishCalendar) . '”'), vous obtiendrez :

 כי תבוא


Pour mettre tout cela ensemble :

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


Cela afficherait : כי תבוא – Ki Savo

Quel jour sommes-nous ?

Plus précisément, quel jour HÉBRAÏQUE est-ce ?


Comme dans l'exemple précédent, nous commençons avec un jewishCalendar et un objet format.

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


Ensuite, nous ajoutons la même ligne pour définir le format en hébreu.

 $format->setHebrewFormat(true);


Et enfin (et assez simplement), nous demandons une sortie d'objet de calendrier directe :

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


C'est littéralement tout ce dont vous avez besoin. Le résultat ressemble à ceci :

 17 Elul, 5784


Oui, même si nous avons spécifié setHebrewFormat, il est sorti en anglais.

Puis-je l'obtenir en hébreu RÉEL ?

Pour que la date hébraïque s'affiche entièrement en hébreu (à la fois en mots et en lettres), nous invoquons une méthode légèrement différente appelée, de manière appropriée, HebrewDateFormatter. En supposant (une fois de plus) que vous ayez configuré vos variables initiales et créé un objet jewishCalendar, le code pour générer une date en hébreu serait :

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


Ce qui vous donnerait :

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

Est-ce qu'aujourd'hui est le jour J ?

Parfois, il faut vérifier si une date spécifique correspond à un jour précis, comme Rosh Hodech (le nouveau mois) ou à une fête de plusieurs jours (comme Souccot).


Il s'avère que la méthode PHP Zmanim rend cela très simple. En supposant que vous ayez commencé de la même manière que les autres exemples,

une fois que vous avez configuré l'objet jewishCalendar, c'est aussi simple que

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


Si la date correspond au jour férié, elle renverra « vrai » et vous pourrez procéder avec la logique ou le processus de votre choix, comme afficher la date (ou non).

Alors, quelle est la prochaine étape ?

Croyez-le ou non, il y a encore beaucoup à dire. Dans les semaines à venir, quand j'y arriverai, j'aimerais aborder les moyens d'exploiter les fonctions astronomiques intégrées pour les calculs de temps. Croyez-le ou non, cela peut vraiment avoir une importance pour avoir des heures vraiment précises pour des choses comme le début et la fin du Shabbat et des fêtes, ainsi que d'autres observances.


En attendant, s'il y a autre chose que vous aimeriez me voir couvrir ; ou si vous avez des questions, des corrections ou des félicitations, n'hésitez pas à les laisser dans les commentaires ci-dessous.