Agradecimientos
En este blog, explico conceptos y técnicas relacionados tanto con la forma en que se calculan los llamados “tiempos judíos” (zmanim) como con las técnicas necesarias para utilizar la biblioteca PHP Zmanim – una colección de funciones que te permiten calcular fácilmente los tiempos judíos.
La biblioteca PHPZmanim es mantenida por Zachary Weixelbaum. Como ocurre con muchas cosas en tecnología hoy en día, PHP Zmanim se basa en la fundacional biblioteca Kosher Java de Eliyahu Hershfeld. Le debo una enorme deuda de gratitud tanto a Zachary como a Eliyahu, no solo por el trabajo que han dedicado a desarrollar esas bibliotecas sino también por el apoyo que me han brindado mientras aprendía tanto las pautas técnicas como las religiosas judías (halacha) necesarias para utilizarlas.
Introducción
“¿A qué hora serán las oraciones de la tarde (Mincha) esta semana?” es una pregunta aparentemente compleja. Es engañosamente simple porque “oraciones de la tarde” parecen ser autoexplicativas, pero (como con muchas cosas relacionadas con las reglas religiosas judías (halacha), se necesita una vasta cantidad de antecedentes, comentarios y especificidad.
NOTA: Si ya estás cómodo con los conceptos de tiempo judío (zmanim), siéntete libre de omitir la sección etiquetada como “Instalación de PHP Zmanim”. No me ofenderé ni lo tendré en cuenta.
Es difícil comprender la importancia de los cálculos de tiempo precisos en el día, la semana y la vida religiosas judías. Esto afecta a todo, desde cuándo comienza y termina un ayuno, hasta cuándo es demasiado tarde (o demasiado temprano) para decir ciertas oraciones, hasta el momento en que simplemente poseer (y mucho menos comer) pan está prohibido.
Para expresarlo de otra manera, compartiré una cita del Rabino Abraham Joshua Heschel en su libro “El Shabat”.
El significado del Shabat es celebrar el tiempo en lugar del espacio. Seis días a la semana vivimos bajo la tiranía de las cosas del espacio; en el Shabat intentamos ponernos al tono de la santidad en el tiempo.
Rabbi Abraham Joshua Heschel, “The Sabbath”
Incluso con esa explicación, algunos lectores podrían seguir preguntándose: “¿Por qué hacer tal alboroto por ello? ¿Me estás diciendo que Dios lo tendrá en cuenta si te equivocas por 5 minutos?”
Es una pregunta válida y merece un momento de discusión porque de lo contrario, la necesidad de, y mucho menos el impacto de, este blog (y las técnicas y tecnologías que describe) se ve disminuido.
No, claro, a Dios no le importa. Así como a mi entrenador de pista no le “importa” si me caliento antes de correr, ejecuto mis entrenamientos fuera de temporada o bebo suficiente agua. Seamos sinceros: no importa cuánto me entrene, mi entrenador no estará más saludable. Sin embargo, mi entrenador, que se preocupa por mí más allá de mi rendimiento en la próxima carrera, quiere que YO me preocupe. Quieren que esté totalmente comprometido, solo porque saben que mi experiencia será más satisfactoria por ello.
Del mismo modo, Dios no “se preocupa”. Pero sabemos (a través de los textos del Torá y el Talmud) que Dios quiere que NOSOTROS nos preocupemos. Y así, los estudiosos judíos a lo largo de los milenios han intentado, utilizando la evidencia presentada en el texto, evitar respuestas simples y simplistas, y profundizar para descubrir los detalles.
Volviendo a la pregunta en cuestión: “¿A qué hora se rezan las oraciones de la tarde?” Para comprender eso, primero tenemos que entender qué define “día” (en comparación con “noche”); cómo entender qué demarcación separa “mañana” de “tarde”; cómo dividir efectivamente el día en partes; y mucho más.
Si bien este blog introducirá algunos de estos conceptos y términos según sea necesario, no debe considerarse exhaustivo bajo ninguna circunstancia.
No sorprende que las computadoras hayan facilitado el cálculo de estas horas, y ahora hay una amplia gama de sitios web y aplicaciones listas para hacerlo por nosotros. Incluso para aquellos que deseen crear sus propios programas para realizar estos cálculos, existen soluciones que ahorran tiempo en forma de bibliotecas de código como KosherJava y sus numerosos puertos, incluidos PHP, Swift, .Net, JavaScript, Python, y muchos más.
Sin embargo, es importante comprender la teoría detrás de las herramientas. Cualquier persona que desee crear un sitio web o una aplicación debe asegurarse de que su programa no esté dando inadvertidamente las horas incorrectas. Si bien, como se mencionó anteriormente, nadie “irá al infierno” (por así decirlo) por rezar en el momento equivocado, existe un mandamiento estricto:
וְלִפְנֵ֣י עִוֵּ֔ר לֹ֥א תִתֵּ֖ן מִכְשֹׁ֑ל וְיָרֵ֥אתָ מֵּאֱלֹהֶ֖יךָ
“lifnei iver lo titein michshol v’yareita mei-elohecha”
“No pongas un obstáculo delante de un ciego”(Leviticus 19:14)
Una cosa es que un individuo se equivoque accidentalmente. Es bastante otro proporcionar información incorrecta que hace que alguien (o peor, MUCHAS personas) cometa un error, creyendo que la información que recibieron (de su aplicación) era precisa y confiable.
Los Tiempos Básicos
Con eso en mente, comenzaremos con la comprensión de los tiempos que son bastante sencillos y menos afectados por las variaciones en la tradición judía:
- El amanecer (Netz Hachma) es el viejo amanecer náutico, el momento en que el borde superior del disco del sol toca el horizonte.
- El atardecer (Shkia) es el otro lado de la moneda diaria, el momento en que el borde superior del sol cae justo por debajo del horizonte.
- A “seasonal hour” (sha’ah) refers to the even division of daylight, the time between sunrise and sunset. There are always 12 seasonal hours, but they may be longer or shorter than a regular (on your clock) hour because the amount of daylight fluctuates with the season.
- Tenga en cuenta que algunas tradiciones calculan una sha’ah como 12 divisiones del tiempo desde el amanecer (alot hashachar, o simplemente “alot” cuando la luz es visible sobre el horizonte, pero antes del amanecer en sí) hasta la noche (tzeis hakochavim, o simplemente “tzeis”, cuando NO hay luz visible sobre el horizonte, después del atardecer). Entraremos más en el amanecer (alot) y la noche (tzeit) más adelante en el blog.
- Las minutos estacionales (sha’ot zmaniyot) es 1/60 de una hora estacional y, al igual que una hora estacional, puede ser mayor o menor que un minuto en su reloj.
Como puede ver, la salida y puesta del sol forman el núcleo fundamental de todos los demás cálculos de tiempo, y un gran número de tiempos judíos importantes durante el día se derivan directamente de esos. Por ejemplo, en algunas tradiciones, encontrará:
- El Shabbat comienza el viernes por la noche, 18 minutos antes de la puesta del sol (shkia)
- El Shabbat termina el sábado por la noche 45 (o 50, o 72) minutos después de la puesta del sol (shkia)
- …y así sucesivamente.
Cálculos donde “es complicado”
Una vez que tenga la salida y puesta del sol bien establecidas, el siguiente paso es identificar los dos momentos críticos del amanecer y la noche. El amanecer (Alot haShachar, o simplemente “Alot”) y la noche (Tzeis hakochavim, o simplemente “Tzeis”) se reflejan el uno al otro de la misma manera que lo hacen la salida y puesta del sol. El amanecer es el momento en que se ve la luz (pero no el sol) en el horizonte. La noche es el momento en que ya no se ve la luz.
Desafortunadamente, la presencia o ausencia de “luz” es altamente subjetiva, y por lo tanto la forma en que se ha calculado varía mucho.
- Algunas tradiciones utilizan un número fijo de minutos de reloj antes del amanecer o después de la puesta del sol.
- Otros utilizarán la astronomía para identificar el momento en que el sol está por debajo del horizonte por un número específico de grados.
- Otros utilizarán una fórmula, como tomar la cantidad de luz diurna (desde la salida hasta la puesta del sol), dividir eso en 10 partes iguales, y luego restar esa cantidad del amanecer o agregarla a la puesta del sol.
- Sin embargo, otros tomarán el tiempo que el sol está por debajo del horizonte en un día “igual” (es decir, el equinoccio de primavera o de otoño, cuando la cantidad de luz solar y oscuridad es exactamente la misma), calcularán la diferencia (en minutos de reloj) entre ese tiempo y la salida del sol, normalizarán esos minutos en relación con los “minutos estacionales” (“sha’ot zmaniyot”) para el día específico en cuestión, y finalmente restarán esa cantidad de la salida del sol (o agregarán ESO al atardecer) para el día en cuestión.
¿Suena confuso? Como el título de esta sección dice, “es complicado”.
Mi punto al describir estos no es establecer una única “corrección” de cálculo, sino más bien ayudarte a entender el objetivo final de cada tipo de cálculo, así como para que entiendas que hay múltiples formas en que diferentes tradiciones judías llegan a cada cálculo.
Los Tiempos Complejos
Una vez que tienes el amanecer (alot), la salida del sol (netz), el atardecer (shkia) y la noche (tzeis), se vuelve posible calcular otros tiempos importantes del día. Estos incluyen:
- El tiempo más temprano para las oraciones de la tarde (Mincha Gedola), que a menudo se calcula como un cierto número de horas estacionales (sha’ah) después de amanecer o salida del sol. El punto de este tiempo es que es el momento más temprano en que ocurre la “tarde” (literalmente, después del mediodía).
- El tiempo preferido para las oraciones de la tarde (Mincha ketana), que se calcula como un número mayor de horas estacionales (sha’ah) después de la salida del sol (netz) o el amanecer (alot). El punto aquí es que es más de 3/4 del camino a través del día, cuando está CLARAMENTE en la tarde, pero sin el riesgo de que accidentalmente sea de noche (tzeis).
- La última hora para las oraciones de la tarde (Plag haMincha, o “plag”), que generalmente se calcula como el tiempo entre la mejor hora para las oraciones de la tarde (mincha ketana) y la noche (tzeis).
Si bien hay varios otros momentos clave a los que llegaremos en un blog diferente, estos son suficientes para comenzar.
Instalación de la Biblioteca PHP Zmanim
Con esos detalles técnicos resueltos, ahora podemos pasar a… algunos detalles técnicos! Excepto que esta vez son detalles TÉCNICOS técnicos. (y para aquellas personas que saltaron directamente desde la introducción a esta sección, ¡BIENVENIDOS! Es genial tenerlos de vuelta!)
PHP Zmanim es una biblioteca compleja que no solo incluye la importación de Kosher Java al lenguaje PHP sino también algunos módulos de soporte como Carbon (una herramienta que ayuda a hacer conversiones de fecha y hora más rápidas, fáciles y precisas); Symfony (un framework de diseño web); y algunas otras utilidades más pequeñas.
El punto es que todos esos módulos funcionan en concierto con PHP Zmanim y necesitas instalarlos todos para que algo funcione. La forma más fácil de instalarlos todos es usando la utilidad PHP “composer” que gestiona dependencias.
Si necesitas ejecutar PHP Zmanim en un servidor web y no tienes acceso para ejecutar instaladores en la línea de comandos, aún tienes suerte. Simplemente copia el directorio ./vendor desde una instalación local, y – con algunas advertencias – funcionará.
¿Cuáles son esas precauciones? La principal es asegurarse de que la versión de PHP soportada por tu proveedor de hosting coincida con la que usas al instalar a través de Composer.
Esto me lleva al comando de instalación real de Composer. Sé que aún no hemos llegado a codificar nada, pero vamos a configurar un directorio donde se van a colocar los scripts. Para este blog, lo voy a llamar /phpzmanim_test.
En una ventana de terminal, muévete a ese directorio:
cd /php zmanim_test
Ahora escribe el comando:
composer -V
(nota que es una V mayúscula)
Esto confirmará si Composer está instalado o no. Si no lo está, busca rápidamente cómo instalarlo de la mejor manera en tu sistema operativo.
A continuación, escribe el comando:composer require zachweix/php-zmanim
Esto hará dos cosas:
- Primero, creará el archivo
composer.json
en el directorio actual, con instrucciones de que se debe instalar PHP Zmanim. - En realidad, instala PHP Zmanim para ti en un directorio ./vendor dentro del directorio actual. No se necesitan pasos adicionales.
El único otro elemento relacionado con “composer” a tener en cuenta es que si alguna vez necesitas actualizar, puedes hacerlo fácilmente yendo al directorio /phpzmanim_test (o el que hayas llamado a tuyo) y escribiendo el comando composer update
. Esto leerá la información en el archivo composer.json y actualizará todo lo que encuentre allí.
(SPOILER: esto significa que NO debes eliminar el archivo composer.json. Sin embargo, no tienes que copiarlo a tu sitio remoto con el resto de tu aplicación si no quieres hacerlo.)
Una vez hecho esto, debes incluir la siguiente línea en cada script PHP que utilizará la biblioteca PHP Zmanim:
require 'vendor/autoload.php';
Introducción a PHP Zmanim
Ahora que PHP Zmanim está instalado, estás listo para comenzar a escribir código con él.
Para ello, primero crearás un objeto PHP, una colección (en realidad, un array) de datos que se pasan a varias funciones. Este objeto contiene tanto la fecha específica para los tiempos que deseas obtener como también la información precisa de ubicación.
Creando un Objeto con “Zmanim::Create()”
Antes de comenzar, necesitarás saber algunas cosas sobre la ubicación donde estás solicitando los tiempos:
- La latitud y longitud.
- La zona horaria, formateada utilizando el formato base de datos de zonas horarias (ejemplo:
“America/New_York”
). - La elevación de esa ubicación, si decides utilizarla. (SPOILER: muy raramente la elevación influye en estos cálculos.)
- El año, mes y día de los tiempos que estarás calculando.
El formato para crear tu objeto es el siguiente:
$VARNAME = Zmanim::create(YEAR, MONTH, DAY, "NAME OF LOCATION", LATITUDE, LONGITUDE, ELEVATION, "TIME ZONE");
Aquí hay un ejemplo específico:
$zmanim = Zmanim::create(2019, 2, 21, "New York City", 40.850519, -73.929214, 200, "America/New_York");
Lo que eso parece como un script con algunas variables en lugar de la entrada literal:
<?php
require 'vendor/autoload.php';
use PhpZmanim\Zmanim;
use PhpZmanim\Calendar\ComplexZmanimCalendar;
use PhpZmanim\Geo\GeoLocation;
$getdate = date('Y-m-d');
$getyear = date('Y', strtotime($getdate));
$getmonth = date('m', strtotime($getdate));
$getday = date('d', strtotime($getdate));
$locname = "Beit Knesset Chochmat Shlomo, Beachwood, OH";
$lat = 41.4939407;
$long = -81.516709;
$elev = 0;
$tz = 'America/New_York';
$zmanim = Zmanim::create($getyear, $getmonth, $getday, $locname, $lat, $long, $elev, $tz);
Con ese código en su lugar, tienes un objeto para la fecha de hoy para la ubicación especificada. Incluso puedes imprimirlo usando la función print_r()
de PHP:
print_r($zmanim);
Lo que debería darte una salida que se parece a esto:
PhpZmanim\Zmanim Object
(
[calendar:PhpZmanim\Calendar\AstronomicalCalendar:private] => Carbon\Carbon Object
(
[endOfTime:protected] =>
[startOfTime:protected] =>
[constructedObjectId:protected] => 00000000000000080000000000000000
[localMonthsOverflow:protected] =>
[localYearsOverflow:protected] =>
[localStrictModeEnabled:protected] =>
[localHumanDiffOptions:protected] =>
[localToStringFormat:protected] =>
[localSerializer:protected] =>
[localMacros:protected] =>
[localGenericMacros:protected] =>
[localFormatFunction:protected] =>
[localTranslator:protected] =>
[dumpProperties:protected] => Array
(
[0] => date
[1] => timezone_type
[2] => timezone
)
(Hay más, pero ya entiendes la idea).
Obtener tu primer tiempo en tiempo real – Amanecer (Netz HaHachma)
Una vez que tengas un objeto creado, usarlo para obtener tiempos específicos a través de PHP Zmanim es casi anticlimático. Obtener el amanecer es tan simple como:
$sunrise = $zmanim->sunrise;
Si no estás familiarizado con ello o no lo has usado antes, el ->
indica que estás consultando un objeto (de nuevo, una colección de elementos de datos) o usando un método incorporado
Esto devolverá algo que se parece a esto:
2024-12-20 07:48:52
Para aquellos que siguen, el código completo hasta ahora se ve así:
sunrise;
echo "$sunrise\n";
?>
Resumen
Hay mucho más que cubrir en PHP Zmanim, lo cual planeo hacer en las próximas semanas. Pero esto al menos debería ayudarte a comenzar con la construcción de un script o sitio web basado en PHP y mostrar tiempos precisos para momentos judíos.
Como siempre, recibo preguntas, correcciones y felicitaciones en los comentarios a continuación.
Source:
https://dzone.com/articles/time-data-series-getting-started-with-php-zmanim