PHP Zmanimについて書いたのは久しぶりです—私がそれに取り組んできたことや、それを実装しながら学んだことについてです。しかし、遅れがあったにもかかわらず、私は常にこの話を続けるつもりでした。それが今日の目的です。
私の最初の投稿では、PHP Zmanimライブラリのインストールと使い始め方を説明しました。次の投稿では、より複雑な時間の計算と、このツールの真の力—さまざまなzmanimに対する最も一般的なラビの意見を適用することについて掘り下げました。私は、前回の内容を最小限の重複で拾い上げるので、もし再びスピードを取り戻す必要がある場合は、以前の投稿へのリンクを用意しています。
今日の目標は、PHP Zmanimの使用を、ライブラリの比較的単純な使い方を超えて探求することです。それには以下が含まれます:
- 標準の時間を取り、特定のシナゴーグの使用ケースに合わせて調整すること(「ミンハは毎日シキアの25分前に始まる」)。
- 時間以外の計算を提供するPHP Zmanimライブラリの関数やメソッドを使用すること—たとえば、週ごとのトーラーの部分、ヘブライ日、特定の日が祝日(ロシュ・ホデシュやスコットのような)であるかどうかです。
謝辞
再度、このすべてを可能にした方々への感謝を述べることから始める必要があります。名前の長いリストの中で最も重要な人物は、PHP Zmanimライブラリのメンテナーであるザカリー・ワイクセルバウムです。そして、PHP Zmanimが基づいているKosher Javaライブラリの作成者であるエリヤフ・ハーシュフェルドもいます。
クイックリフレッシャー
前回終了時点で、次のような基本的なPHPスクリプトがありました:
- 位置(緯度/経度)、タイムゾーン、標高の変数を設定します。
- 日付を設定します
- これらの変数からphp zmanimオブジェクトを作成します
- 日の出からミンハまでの時間を計算するための組み込みメソッドを使用します
このようになりました:
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";
しかし、日の出はたったの始まりです。組み込みの計算(GitHub ReadMeページで説明されている)を使用すると、日の出からミンハまでのさまざまな時間を取得できます。たとえば、特定のラビニック意見を使用してミンハ・ゲドラを取得するには、次のように含めることができます:
$gedolah = $zmanim->minchaGedola16Point1Degrees
前回のブログでは、PHP Zmanimのformatメソッドを使用して出力をより読みやすくする方法も説明しました:
$gedolah = $gedolah->format('g:i a');
「味を調整」— 時間の調整
シナゴーグにあまり時間を費やさない人々のために(非難はないし、恥じることもない、ここには歓迎される)—、ザマンの名前にもかかわらず、ごく少数の団体がミンハ(午後の祈り)をミンハ・ケタナ、ミンハ・ゲドラ、あるいはプラグ・ハミンハで祈っているというのは明白ではないかもしれません。
実際、時刻の計算に関する作業の多くは、単なる「ミンハ・ゲドラは何時か?」ということよりも、「仕事の後に皆がここにたどり着く時間があるだけ遅くまでミンハを予定できるのか?ただし、誰も夕食を逃すために来ないようにあまり遅くしてはいけない」という点に関係しています。
もし理論的すぎると感じるなら、週間スケジュールを設定する際に私のシナゴーグが考慮する論理的なジェンガパズルを共有させてください。
- 金曜日の夕方のキャンドル点灯:シキア(日没)から18分引いた時刻
- 夏の金曜日のミンハ:プラグ・ハミンハ(”plagHaminchaAteretTorah”を使用)から20分引いた時刻
- 冬の金曜日のミンハ:シキア(日没)から22分引いた時刻
- 土曜日のミンハ:シキアから40分引いた時刻
- 土曜日のマアリブ:シキアに50分を加えた時刻
- シャバトの終わり:シキアに45分を加えた時刻
- 平日のミンハ:週の中で最も早いシキアを見つけ、それから17分を引く
私が以前のブログで取り上げた他の時刻も重要ですが、おそらく、それらが期待されるよりも頻繁に重要でないことに気づき始めたと思います。
したがって、時間(例:shkia/sunset)を取得してから分を加算または減算する方法はどうですか?前に使用したスクリプトから始めます:
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);
それに、日没を取得するコードを追加します:
$sunset = $zmanim->sunset;
そして、18分を減算してキャンドルライティングの時間を取得します:
$candles = date('g:i a', strtotime($sunset . " -18 minutes"));
その通りです。PHPの独自の文字列を時間に変換する機能を使用するだけです。サスペンスに保たせてごめんなさい。しかし、本当にそれだけ簡単です。
トーラポーションは何ですか?ヘブライ暦の日付は?いつがロシュ・ホデシュですか?
(…そして他の、シナゴーグの周りでしばしば尋ねられる重要だが厄介な質問。)
日付計算とともに、KosherJavaライブラリ(したがってPHP Zmanimライブラリ)には、上記のような情報を素早く提供するためのメソッドや関数があります。
理解する最初のことは、これまでに取り組んできたPHP Zmanimオブジェクトが特定の日付の特定の時刻セットを持つZmanimオブジェクトであるということです。— 日付そのものに関わるものについては、jewishCalendar
オブジェクトをインスタンス化します。良いニュースは、これを作成するのがずっと簡単であるということです。必要なのは年、月、日だけです。
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));
これでjewishCalendar
オブジェクトを使用できるようになり、時刻に関するメソッドと同様のメソッドを使用できます。たとえば、選択した日付が土曜日であると仮定すると、トーラポーションを取得できます:
$format = Zmanim::format();
$parshaeng = json_decode('"' . $format->formatParsha($jewishCalendar) . '"');
($format
設定を今は無視してください。少し後で詳しく説明します)。
このコードを実行すると、$parshaeng
が返されます。
Parshas Ki Savo
注意していただくと、緯度、経度、タイムゾーンなどを提供する必要がなかったことに気付くでしょう。この機能だけでも、日付、Torahの部分などを取得できる能力は、時間の計算なしでもPHP Zmanimライブラリを有用にすることができます。
それをヘブライ語で取得できますか?
トーラーの部分?もちろんです!ここが$format
行が重要になる場所です。
まず、それが何かの説明です:それは、ZmanimやjewishCalendar
などのオブジェクトを修正し、表示および出力オプションを設定するメソッドです。Zmanim::format()
を他の情報なしに設定すると、デフォルトで英語になります。しかし、追加の行でヘブライ語を指定できます:
$format->setHebrewFormat(true)
これで、同じjson_decode(‘”‘ . $format->formatParsha($jewishCalendar) . ‘”‘)
行を実行すると、次のようになります:
כי תבוא
すべてをまとめると:
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";
これは表示されます:כי תבוא – Ki Savo。
今日は何曜日ですか?
より具体的には、ヘブライ語の曜日は何ですか?
前の例と同様に、jewishCalendar
とフォーマットオブジェクトを準備します。
$jewishCalendar = Zmanim::jewishCalendar(Carbon::createFromDate($theyear, $themonth, $theday));
$format = Zmanim::format();
次に、同じ行を追加して、フォーマットをヘブライ語に設定します。
$format->setHebrewFormat(true);
最後に(非常に簡単に)、直接カレンダーオブジェクトの出力を要求します:
$zmandate = json_decode('"' . $format->format($jewishCalendar) . '"');
これだけで十分です。結果は次のようになります:
17 Elul, 5784
はい、setHebrewFormat
を指定したにもかかわらず、英語で表示されました。
実際のヘブライ語で取得できますか?
ヘブライ暦の日付を完全にヘブライ語で表示するには、適切な方法であるHebrewDateFormatter
を使用します。
(再度)初期変数を設定し、jewishCalendar
オブジェクトを作成したと仮定すると、ヘブライ語の日付を出力するコードは次のようになります:
$hebformat = HebrewDateFormatter::create();
$hebformat->setHebrewFormat(true);
$hebdate = json_decode('"' . $hebformat->format($jewishCalendar) . '"');
print("Hebrew date: $hebdate\n");
これにより、次のようになります:
Hebrew date: י״ח אלול תשפ״ד
今日は何の日?
特定の日付がロシュ・ホデシュ(新月)のような特定の日であるか、あるいは数日間にわたる祝日(スコット)の一部であるかを確認する必要がある場合があります。
これを行うためには、PHPのZmanimメソッドが非常に簡単です。他の例と同様に開始したと仮定し、jewishCalendar
オブジェクトを設定した後は、次のようにするだけです:
$jewishCalendar->isRoshHashana();
$jewishCalendar->isSuccos();
日付が祝日と一致する場合は「true」を返し、日付を表示する(またはそうでない)など、任意のロジックやプロセスを実行できます。
次は何ですか?
信じられないかもしれませんが、まだカバーする内容があります。今後の数週間に取り組む予定です。時間計算のために組み込みの天文学的関数を活用する方法や、シャバトや祝日の開始や終了など、他の観念にとって本当に正確な時間を持つことが重要である点についてカバーしたいと考えています。
その間、カバーしてほしい他の内容や質問、訂正、称賛がある場合は、以下のコメント欄にお気軽にご記入ください。
Source:
https://dzone.com/articles/time-data-series-the-rest-of-the-story