Ha pasado un tiempo desde que escribí sobre PHP Zmanim, el trabajo que he hecho con él y las cosas que he aprendido al implementarlo. Pero a pesar de la demora, siempre tuve la intención de continuar la conversación. Eso es lo que estamos haciendo hoy.
En miprimera publicación , expliqué cómo instalar y comenzar a usar la biblioteca PHP Zmanim. Luego, en la siguiente publicación , hablé en profundidad sobre cómo calcular tiempos más complejos y el verdadero poder de la herramienta: aplicar las opiniones rabínicas más comunes para varios zmanim. Continúo donde lo dejé con una superposición mínima, así que si necesitas tomarte un minuto para volver al ritmo, te dejo enlaces a esas publicaciones anteriores.
El objetivo de hoy es explorar usos de PHP Zmanim que van más allá del uso relativamente sencillo de la biblioteca. Esto incluye:
Una vez más, debo comenzar expresando mi gratitud a las personas que hicieron posible todo esto. En primer lugar, entre una larga lista de nombres, se encuentran Zachary Weixelbaum, el mantenedor de la biblioteca PHP Zmanim , y Eliyahu Hershfeld: creador de la biblioteca Kosher Java en la que se basa PHP Zmanim.
Cuando lo dejamos, teníamos un script PHP básico sólido que:
Se veía así:
<?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"; ?>
Pero el amanecer es solo el comienzo. Si utilizas cualquiera de los cálculos integrados (que se describen en la página readme de GitHub ), puedes obtener una amplia variedad de horarios. Por ejemplo, para lograr que Mincha Gedola utilice una opinión rabínica específica, podría incluir:
$gedolah = $zmanim->minchaGedola16Point1Degrees
En el último blog, también cubrí formas de usar el método de formato de PHP Zmanim para hacer que la salida sea más legible:
$gedolah = $gedolah->format('g:i a');
Para aquellos que no pasan mucho tiempo en la sinagoga (sin culpa, sin vergüenza, aún así eres bienvenido aquí) puede que no sea obvio, pero, a pesar del nombre del zman, muy pocas organizaciones rezan Minjá (oraciones de la tarde) en Minjá Ketana, Minjá Gedola o Plag haMinjá.
De hecho, gran parte del trabajo relacionado con el cálculo de los tiempos tiene menos que ver con el simple “¿A qué hora es Minjá Gedola?” y más con “¿A qué hora del día podemos programar razonablemente Minjá para que todos tengan tiempo de llegar después del trabajo; pero no TAN tarde que nadie venga porque se perderán la cena?”.
Si eso es demasiado teórico, permítanme compartir el rompecabezas lógico de jenga que mi sinagoga considera al establecer el cronograma semanal:
Si bien todas las otras ocasiones que hablé en blogs anteriores todavía importan, espero que estés empezando a darte cuenta de que importan con menos frecuencia de lo que uno podría esperar.
Entonces, ¿cómo se toma una hora (como la hora de la puesta del sol) y luego se suman o restan minutos? Comenzaremos con el mismo guión que teníamos antes:
<?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);
A esto le agregaremos el código para obtener la puesta del sol:
$sunset = $zmanim->sunset;
Y luego restaremos 18 minutos para obtener el tiempo de encendido de las velas:
$candles = date('g:i a', strtotime($sunset . " -18 minutes"));
Así es. Solo tienes que usar la función string-to-time de PHP. Lo siento si te he dejado en suspenso, pero es así de fácil.
(…y otras preguntas esenciales pero inquietantes que a menudo se hacen en la sinagoga y sus alrededores.)
Junto con los cálculos de fechas, la biblioteca KosherJava (y por lo tanto la biblioteca PHP Zmanim) tiene métodos y funciones para proporcionar rápidamente información como las solicitadas anteriormente.
Lo primero que hay que entender es que el objeto PHP Zmanim con el que hemos estado trabajando hasta ahora ha sido un objeto Zmanim, un objeto que tiene un conjunto de horas específicas para una fecha en particular. Para las cosas que involucran las fechas en sí, creamos una instancia de un objeto jewishCalendar. La buena noticia es que es MUCHO más fácil de crear. Todo lo que necesitas es el año, el mes y el día.
<?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));
Ahora tenemos un objeto jewishCalendar con el que trabajar y podemos usar métodos similares a los que encontramos para las horas. Por ejemplo: Suponiendo que la fecha que seleccionamos fue un sábado, podemos obtener la porción de la Torá:
$format = Zmanim::format(); $parshaeng = json_decode('"' . $format->formatParsha($jewishCalendar) . '"');
(ignore la configuración $format por ahora. Lo analizaremos en profundidad en breve).
Si ejecutaras ese código, $parshaeng te daría:
Parshas Ki Savo
Notarás que no necesitamos proporcionar latitud, longitud, zona horaria, etc. No puedo enfatizar lo suficiente que esta capacidad por sí sola (la capacidad de obtener fechas, porciones de la Torá y más) hace que la biblioteca PHP Zmanim sea útil por sí sola, incluso sin los cálculos de tiempo.
¿La parashá? ¡Por supuesto! Aquí es donde entra en juego la línea $format.
Primero, una explicación de lo que es: es un método que modifica objetos como Zmanim y jewishCalendar, configurando las opciones de visualización y salida. Si se configura Zmanim::format() sin ninguna otra información, el valor predeterminado es inglés. Pero luego puedes indicarle al sistema que quieres hebreo con esta línea adicional:
$format->setHebrewFormat(true)
Ahora, si ejecuta la misma línea json_decode('”' . $format->formatParsha($jewishCalendar) . '”'), obtendrá:
כי תבוא
Poniéndolo todo junto:
<?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";
Esto mostraría: כי תבוא – Ki Savo
Más específicamente, ¿qué día HEBREO es?
Al igual que en el ejemplo anterior, comenzamos con un jewishCalendar y un objeto de formato.
$jewishCalendar = Zmanim::jewishCalendar(Carbon::createFromDate($theyear, $themonth, $theday)); $format = Zmanim::format();
Luego, agregamos la misma línea para establecer el formato en hebreo.
$format->setHebrewFormat(true);
Y finalmente (y de forma bastante sencilla), solicitamos una salida de objeto de calendario directo:
$zmandate = json_decode('"' . $format->format($jewishCalendar) . '"');
Eso es literalmente todo lo que necesitas. El resultado es algo como esto:
17 Elul, 5784
Sí, aunque especificamos setHebrewFormat salió en inglés.
Para que la fecha hebrea aparezca completa en hebreo (tanto en palabras como en letras), invocamos un método ligeramente diferente llamado, apropiadamente, HebrewDateFormatter. Suponiendo (una vez más) que configuraste tus variables iniciales y creaste un objeto jewishCalendar, el código para generar una fecha en idioma hebreo sería:
$hebformat = HebrewDateFormatter::create(); $hebformat->setHebrewFormat(true); $hebdate = json_decode('"' . $hebformat->format($jewishCalendar) . '"'); print("Hebrew date: $hebdate\n");
Lo cual te daría:
Hebrew date: י״ח אלול תשפ״ד
A veces, es necesario comprobar si una fecha específica es… bueno, un día específico. Como Rosh Chodesh (el nuevo mes) o parte de una festividad de varios días (como Sucot).
Resulta que el método PHP Zmanim hace que esto sea muy sencillo. Suponiendo que hayas comenzado de la misma manera que en los otros ejemplos,
Una vez que haya configurado el objeto jewishCalendar, es tan simple como
$jewishCalendar->isRoshHashana(); $jewishCalendar->isSuccos();
Si la fecha coincide con el día festivo, devolverá “verdadero” y podrá continuar con cualquier lógica o proceso que desee, como mostrar la fecha (o no).
Lo creas o no, todavía hay más por cubrir. En las próximas semanas, cuando llegue el momento, me gustaría cubrir formas de aprovechar las funciones astronómicas integradas para los cálculos de tiempo. Lo creas o no, puede ser muy importante en términos de tener horas verdaderamente precisas para cosas como el inicio y el final del Shabat y las festividades, junto con otras observancias.
Mientras tanto, si hay algo más que te gustaría que cubra, o si tienes preguntas, correcciones o felicitaciones, no dudes en dejarlas en los comentarios a continuación.