Já faz um tempo desde que escrevi sobre o PHP Zmanim — o trabalho que fiz com ele e as coisas que aprendi ao implementá-lo. Mas apesar do atraso, sempre tive a intenção de continuar a conversa. É isso que estamos fazendo hoje.
No meu primeiro post, expliquei como instalar e começar a usar a biblioteca PHP Zmanim. Em seguida, no próximo post, aprofundei-me no cálculo de horários mais complexos e no verdadeiro poder da ferramenta — aplicando as opiniões rabínicas mais comuns para vários zmanim. Estou continuando de onde parei com uma sobreposição mínima, então se precisar de um minuto para se atualizar, linkei para esses posts anteriores.
O objetivo hoje é explorar usos do PHP Zmanim que vão além do uso relativamente direto da biblioteca. Isso inclui:
- Pegar um horário padrão e ajustá-lo para casos de uso específicos da sinagoga (“Mincha começa 25 minutos antes do Shkia todos os dias”).
- Usar funções e métodos da biblioteca PHP Zmanim que fornecem cálculos não relacionados a horários — como a Porção Semanal da Torá, a data hebraica e se uma data especificada é um feriado (como Rosh Chodesh ou Sukkot).
Agradecimentos
Mais uma vez, preciso começar expressando minha gratidão às pessoas que tornaram tudo isso possível. Entre uma longa lista de nomes, destaca-se Zachary Weixelbaum, o mantenedor da biblioteca PHP Zmanim, e Eliyahu Hershfeld, criador da biblioteca Kosher Java na qual o PHP Zmanim é baseado.
Um Rápido Resumo
Quando paramos, tínhamos um script PHP básico sólido que:
- Define variáveis para a localização (em latitude/longitude), junto com o fuso horário e a elevação.
- Define a data
- Cria um objeto php zmanim a partir dessas variáveis
- Usa os métodos embutidos para calcular o horário de tudo, desde o nascer do sol até minchá e tzeit hakochavim
Ele se parecia com isso:
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";
Mas o nascer do sol é apenas o começo. Usando qualquer um dos cálculos embutidos (que estão descritos na página ReadMe do GitHub), você pode obter uma ampla variedade de horários. Por exemplo, para obter Minchá Gedola usando uma opinião rabínica específica, eu poderia incluir:
$gedolah = $zmanim->minchaGedola16Point1Degrees
No último blog, também abordei maneiras de usar o método de formatação do PHP Zmanim para tornar a saída mais legível:
$gedolah = $gedolah->format('g:i a');
“Sal a Gosto” — Ajustando Horários
Para aqueles que não passam muito tempo na sinagoga (sem culpa, sem vergonha, você ainda é bem-vindo aqui) pode não ser óbvio, mas — apesar do nome do zman — pouquíssimas organizações rezam Minchá (orações da tarde) em Minchá Ketana, Minchá Gedola ou Plag haMinchá.
Na verdade, grande parte do trabalho em relação ao cálculo dos horários tem menos a ver com o simples “que horas é a Minchá Gedola?” e mais com “quão tarde no dia podemos agendar a Minchá de forma razoável para que todos tenham tempo de chegar depois do trabalho; mas não tão tarde que ninguém venha porque perderia o jantar?”
Se isso for muito teórico, permita-me compartilhar o quebra-cabeça lógico que minha sinagoga considera ao definir o cronograma semanal:
- Acender as velas na sexta à noite: Shkia (pôr do sol) menos 18 minutos
- Minchá de sexta-feira no verão: Plag haMinchá (usando “plagHaminchaAteretTorah”) menos 20 minutos
- Minchá de sexta-feira no inverno: Shkia (pôr do sol) menos 22 minutos
- Minchá de sábado: Shkia menos 40 minutos
- Maariv de sábado: Shkia mais 50 minutos
- Fim do Shabat de sábado: Shkia mais 45 minutos
- Minchá dos dias úteis: encontre o shkia mais cedo da semana e subtraia 17 minutos
Enquanto todos os outros horários que eu abordei em blogs anteriores ainda são importantes, esperançosamente, você está começando a perceber que eles são importantes com menos frequência do que se poderia esperar.
Então, como você pega um horário (como shkia/pôr do sol) e depois adiciona ou subtrai minutos? Começaremos com o mesmo script que tínhamos 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 isso, adicionaremos o código para obter o pôr do sol:
$sunset = $zmanim->sunset;
E então, subtrairemos 18 minutos para obter o horário de acender as velas:
$candles = date('g:i a', strtotime($sunset . " -18 minutes"));
Isso mesmo. Você apenas usa a própria função de string para tempo do PHP. Desculpe se eu mantive você em suspense. Mas é realmente tão fácil assim.
Qual é a Porção da Torá? Qual é a Data Hebraica? Quando é Rosh Chodesh?
(…e outras perguntas essenciais, mas irritantes, frequentemente feitas dentro e ao redor da sua sinagoga.)
Além dos cálculos de datas, a biblioteca KosherJava (e, portanto, a biblioteca PHP Zmanim) possui métodos e funções para fornecer rapidamente informações como as mencionadas acima.
A primeira coisa a entender é que o objeto PHP Zmanim com o qual temos trabalhado até agora tem sido um objeto Zmanim — um objeto que possui um conjunto de horários específicos para uma data particular. Para coisas que envolvem as próprias datas, instanciamos um objeto jewishCalendar
. A boa notícia é que é muito mais fácil de criar. Tudo que você precisa é do ano, mês e dia.
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));
Agora temos um objeto jewishCalendar
para trabalhar e podemos usar métodos semelhantes aos que encontramos para horários. Por exemplo, presumindo que a data que selecionamos fosse um sábado, podemos obter a porção da Torá:
$format = Zmanim::format();
$parshaeng = json_decode('"' . $format->formatParsha($jewishCalendar) . '"');
(Ignore a configuração $format
por enquanto. Vamos nos aprofundar nisso em um momento).
Se você executar esse código, $parshaeng
lhe dará:
Parshas Ki Savo
Você notará que não precisávamos fornecer latitude, longitude, fuso horário, etc. Não posso enfatizar o suficiente que essa capacidade sozinha – a habilidade de obter datas, porções da Torá e mais — torna a biblioteca PHP Zmanim útil por si só, mesmo sem os cálculos de tempo.
Posso obter isso em hebraico?
A porção da Torá? Claro! É aqui que a linha $format
entra.
Primeiro, uma explicação do que é: É um método que modifica objetos como Zmanim e jewishCalendar
, definindo as opções de exibição e saída. Definir Zmanim::format()
sem nenhuma outra informação padrão para o inglês. Mas então você pode informar ao sistema que deseja hebraico com esta linha adicional:
$format->setHebrewFormat(true)
Agora, se você executar a mesma linha json_decode(‘”‘ . $format->formatParsha($jewishCalendar) . ‘”‘)
, você obteria:
כי תבוא
Colocando tudo junto:
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";
Isso exibiria: כי תבוא – Ki Savo.
Que dia é hoje?
Mais especificamente, que dia HEBRAICO é hoje?
Como no exemplo anterior, começamos com um jewishCalendar
e um objeto de formato.
$jewishCalendar = Zmanim::jewishCalendar(Carbon::createFromDate($theyear, $themonth, $theday));
$format = Zmanim::format();
Então, adicionamos a mesma linha para definir o formato para hebraico.
$format->setHebrewFormat(true);
E finalmente (e de forma bem simples), pedimos uma saída de objeto de calendário direto:
$zmandate = json_decode('"' . $format->format($jewishCalendar) . '"');
Isso é literalmente tudo o que você precisa. O resultado é algo como isto:
17 Elul, 5784
Sim, mesmo que tenhamos especificado setHebrewFormat
, veio em inglês.
Posso obter isso em hebraico de verdade?
Para que a data hebraica apareça completamente em hebraico — tanto palavras quanto letras — invocamos um método ligeiramente diferente chamado, adequadamente, HebrewDateFormatter
.
Presumindo (mais uma vez) que você configurou suas variáveis iniciais e criou um objeto jewishCalendar
, o código para exibir uma data em hebraico seria:
$hebformat = HebrewDateFormatter::create();
$hebformat->setHebrewFormat(true);
$hebdate = json_decode('"' . $hebformat->format($jewishCalendar) . '"');
print("Hebrew date: $hebdate\n");
O que lhe daria:
Hebrew date: י״ח אלול תשפ״ד
Hoje é o Dia?
Às vezes, você precisa verificar se uma data específica é… bem, um dia específico como Rosh Chodesh (o novo mês) ou parte de um feriado de vários dias (como Sucot).
Descobriu-se que o método Zmanim do PHP torna isso muito simples. Presumindo que você começou da mesma forma que os outros exemplos, uma vez que você configurou o objeto jewishCalendar
, é tão simples quanto:
$jewishCalendar->isRoshHashana();
$jewishCalendar->isSuccos();
Se a data corresponder ao feriado, retornará “verdadeiro”, e você pode prosseguir com qualquer lógica ou processo que desejar, como exibir a data (ou não).
Então, o que vem a seguir?
Acredite ou não, ainda há mais a cobrir. Nas próximas semanas Sempre que eu conseguir, gostaria de abordar maneiras de aproveitar as funções de astronomia integradas para cálculos de tempo. Acredite ou não, isso pode realmente importar em termos de ter horários verdadeiramente precisos para coisas como o início e o fim do Shabat e feriados, junto com outras observâncias.
No meio tempo, se houver algo mais que você gostaria que eu cobrisse ou se você tiver perguntas, correções ou elogios, sinta-se à vontade para deixá-los nos comentários abaixo.
Source:
https://dzone.com/articles/time-data-series-the-rest-of-the-story