Hace tiempo que no escribo sobre PHP Zmanim — el trabajo que he realizado con él y las cosas que he aprendido al implementarlo. Pero a pesar del retraso, siempre tuve la intención de continuar la conversación. Eso es lo que estamos haciendo hoy.
En mi primer post, expliqué cómo instalar y comenzar a usar la biblioteca PHP Zmanim. Luego, en el próximo post, me adentré en el cálculo de tiempos más complejos y el verdadero poder de la herramienta — aplicando las opiniones rabínicas más comunes para varios zmanim. Continúo donde lo dejé con una mínima superposición, por lo que si necesitas un momento para ponerte al día, he enlazado esos posts anteriores.
El objetivo hoy es explorar usos de PHP Zmanim que van más allá del uso relativamente directo de la biblioteca. Eso incluye:
- Tomar una hora estándar y ajustarla para casos de uso específicos de sinagoga (“Mincha comienza 25 minutos antes de Shkia cada día”).
- Usar funciones y métodos de la biblioteca PHP Zmanim que proporcionen cálculos que no sean de tiempo — como la Porción Semanal de la Torá, la fecha hebrea y si una fecha especificada es una festividad (como Rosh Chodesh o Sucot).
Agradecimientos
Una vez más, debo comenzar expresando mi gratitud a las personas que hicieron todo esto posible. En primer lugar, entre una larga lista de nombres está Zachary Weixelbaum, el mantenendor de la biblioteca de Zmanim de PHP en sí, y Eliyahu Hershfeld, creador de la biblioteca Kosher Java en la que se basa PHP Zmanim.
Un Recordatorio Rápido
Cuando lo dejamos, teníamos un sólido script básico de PHP que:
- Establece variables para la ubicación (en latitud/longitud), junto con la zona horaria y la elevación
- Establece la fecha
- Crea un objeto de zmanim de php a partir de esas variables
- Utiliza los métodos incorporados para calcular la hora de cualquier cosa, desde el amanecer hasta la mincha hasta el tzeit hakochavim
Se veía así:
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 principio. Utilizando cualquiera de los cálculos incorporados (que se describen en la página de GitHub ReadMe), puedes obtener una amplia variedad de horarios. Por ejemplo, para obtener Mincha Gedola utilizando 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');
“Ajustar los tiempos a gusto” — Ajustando los tiempos
Para aquellos que no pasan mucho tiempo en la sinagoga (sin culpas, sin vergüenza, todavía son bienvenidos aquí), puede que no sea obvio, pero — a pesar del nombre del zman — muy pocas organizaciones rezan Minjá (oraciones de la tarde) en Minjá Ketaná, Minjá Gedolá, o Plag haMinjá.
De hecho, gran parte del trabajo con respecto al cálculo de los horarios tiene menos que ver con el simple “¿a qué hora es Minjá Gedolá?” y más con “¿hasta qué tarde podemos programar razonablemente Minjá para que todos tengan tiempo de llegar después del trabajo; pero no tanto 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 horario semanal:
- Encendido de velas del viernes por la noche: Shkía (puesta del sol) menos 18 minutos
- Minjá del viernes en verano: Plag haMinjá (usando “plagHaminjaAteretTorá”) menos 20 minutos
- Minjá del viernes en invierno: Shkía (puesta del sol) menos 22 minutos
- Minjá del sábado: Shkía menos 40 minutos
- Ma’ariv del sábado: Shkía más 50 minutos
- Final del Shabat del sábado: Shkía más 45 minutos
- Minjá de los días de la semana: encontrar la shkía más temprana de la semana, luego restar 17 minutos
Aunque todos los demás horarios que cubrí en blogs anteriores siguen siendo importantes, con suerte, están comenzando a darse cuenta de que importan menos a menudo de lo que uno esperaría.
Entonces, ¿cómo se toma un tiempo (como shkia/puesta de sol) y luego se le suman o restan minutos? Comenzaremos con el mismo script que teníamos antes:
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);
Para eso, agregaremos el código para obtener la puesta de sol:
$sunset = $zmanim->sunset;
Y luego, restaremos 18 minutos para obtener la hora de encendido de las velas:
$candles = date('g:i a', strtotime($sunset . " -18 minutes"));
Así es. Simplemente usas la función de tiempo de cadena propia de PHP. Lamento si te mantuve en suspenso. Pero en realidad es tan fácil como eso.
¿Cuál es la Porción de la Torá? ¿Cuál es la Fecha Hebrea? ¿Cuándo es Rosh Chodesh?
(…y otras preguntas esenciales pero desafiantes que a menudo se hacen en tu sinagoga.)
Junto con los cálculos de fecha, la biblioteca KosherJava (y por lo tanto la biblioteca PHP Zmanim) tiene métodos y funciones para proporcionar rápidamente información como la solicitada anteriormente.
Lo primero que hay que entender es que el objeto Zmanim de PHP con el que hemos estado trabajando hasta ahora ha sido un objeto Zmanim — un objeto que tiene un conjunto de tiempos específicos para una fecha particular. Para cosas relacionadas con las fechas en sí, instanciamos un objeto jewishCalendar
. La buena noticia es que es mucho más fácil de crear. Todo lo que necesitas es el año, mes y día.
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 los tiempos. 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) . '"');
(Ignora la configuración de $format
por ahora. Nos adentraremos en eso en un momento).
Si ejecutaras ese código, $parshaeng
te daría:
Parshas Ki Savo
Notarás que no fue necesario proporcionar la latitud, longitud, zona horaria, etc. No puedo enfatizar lo suficiente que esta capacidad en sí misma, 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.
¿Puedo obtener eso en hebreo?
¿La porción de la Torá? ¡Por supuesto! Aquí es donde entra la línea $format
.
Primero, una explicación de lo que es: es un método que modifica objetos como Zmanim y jewishCalendar
, estableciendo las opciones de visualización y salida. Establecer Zmanim::format()
sin otra información por defecto está en inglés. Pero luego puedes decirle al sistema que quieres hebreo con esta línea adicional:
$format->setHebrewFormat(true)
Ahora, si ejecutas la misma línea json_decode(‘”‘ . $format->formatParsha($jewishCalendar) . ‘”‘)
, obtendrías:
כי תבוא
Reuniéndolo todo:
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.
¿Qué día es?
Más específicamente, ¿qué día HEBREO es?
Como 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 bastante simplemente), 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 así:
17 Elul, 5784
Sí, aunque especificamos setHebrewFormat
, salió en inglés.
¿Puedo obtener eso en hebreo real?
Para que la fecha hebrea se muestre completamente en hebreo — tanto palabras como 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 mostrar una fecha en hebreo sería:
$hebformat = HebrewDateFormatter::create();
$hebformat->setHebrewFormat(true);
$hebdate = json_decode('"' . $hebformat->format($jewishCalendar) . '"');
print("Hebrew date: $hebdate\n");
Lo que te daría:
Hebrew date: י״ח אלול תשפ״ד
¿Es Hoy el Día?
A veces necesitas verificar 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 Zmanim de PHP hace esto muy sencillo. Suponiendo que empezaste de la misma manera que los otros ejemplos, una vez que hayas configurado el objeto jewishCalendar
, es tan simple como:
$jewishCalendar->isRoshHashana();
$jewishCalendar->isSuccos();
Si la fecha coincide con la festividad, devolverá “true”, y puedes continuar con la lógica o proceso que desees, como mostrar la fecha (o no).
¿Y Ahora Qué?
Créelo o no, todavía hay más que cubrir. En las próximas semanas cuando tenga la oportunidad, me gustaría cubrir formas de aprovechar las funciones de astronomía integradas para cálculos de tiempo. Créelo o no, realmente puede importar en términos de tener horarios verdaderamente precisos para cosas como el inicio y el final de Shabat y festividades, junto con otras observancias.
Mientras tanto, si hay algo más que te gustaría que cubriera o si tienes preguntas, correcciones o elogios, no dudes en dejarlos en los comentarios a continuación.
Source:
https://dzone.com/articles/time-data-series-the-rest-of-the-story