paint-brush
Series de datos temporales: continuando el resto de la historiapor@leonadato
338 lecturas
338 lecturas

Series de datos temporales: continuando el resto de la historia

por Leon Adato7m2024/10/08
Read on Terminal Reader

Demasiado Largo; Para Leer

En la última entrada del blog, expliqué cómo instalar y comenzar a usar la biblioteca PHP Zmanim. En la siguiente, 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, las entradas anteriores están vinculadas.
featured image - Series de datos temporales: continuando el resto de la historia
Leon Adato HackerNoon profile picture

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:

  • Tomar un tiempo estándar y ajustarlo para casos de uso específicos de la sinagoga (“Mincha comienza 25 minutos antes de Shkia cada día”).


  • Usando las funciones y métodos de la biblioteca PHP Zmanim que proporcionan cálculos no relacionados con el tiempo, como la porción semanal de la Torá, la fecha hebrea y si una fecha específica es un día festivo (como Rosh Chodesh o Sucot).

Expresiones de gratitud

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.

Un repaso rápido

Cuando lo dejamos, teníamos un script PHP básico sólido 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 PHP zmanim a partir de esas variables.
  • Utiliza los métodos integrados para calcular el tiempo de cualquier cosa, desde el amanecer hasta Minjá y Tzeit Hakojavim.


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

“Sal al gusto” – Tiempos de ajuste

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:

  • Encendido de velas el viernes por la noche: Shkia (atardecer) menos 18 minutos
  • Minjá del viernes de verano: Plag haMinjá (usando “plagHaminjáAteretTorá”) menos 20 minutos
  • Minjá del viernes de invierno: Shkia (atardecer) menos 22 minutos
  • Sábado Minjá: Shkia menos 40 minutos
  • Sábado Ma'ariv: Shkia más 50 minutos
  • Sábado fin de Shabat: Shkia más 45 minutos
  • Minjá de los días laborables: encuentre la shkia más temprana de la semana, luego réstele 17 minutos


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.

¿Cuál es la parashá? ¿Cuál es la fecha hebrea? ¿Cuándo es Rosh Jodesh?

(…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.

¿Puedo conseguirlo en hebreo?

¿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

¿Que día es hoy?

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.

¿Puedo obtener eso en hebreo REAL?

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: י״ח אלול תשפ״ד

¿Es hoy el día?

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).

Entonces, ¿qué sigue?

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.