그동안 PHP Zmanim에 대해 쓴 것이 오래되었습니다 — 내가 이를 통해 한 작업과 구현하는 동안 배운 것들. 그렇지만 지연에도 불구하고, 항상 대화를 이어나가기로 했습니다. 그것이 우리가 오늘 하는 일입니다.
첫 번째 게시물에서 PHP Zmanim 라이브러리를 설치하고 시작하는 방법을 설명했습니다. 그런 다음, 다음 게시물에서 더 복잡한 시간을 계산하고 도구의 실제 능력 — 다양한 zmanim에 대한 가장 일반적인 래빈 의견을 적용하는 방법을 살펴봤습니다. 저는 최소한의 중복으로 남겨둔 곳에서 다시 시작하고 있으니, 속도를 올리기 위해 잠시 시간을 내야 한다면, 이전 게시물에 링크를 걸어두었습니다.
오늘의 목표는 PHP Zmanim을 사용하여 라이브러리의 비교적 직접적인 사용을 넘어서는 방법을 탐구하는 것입니다. 이에는 다음이 포함됩니다:
- 표준 시간을 가져와 회당 특정 사용 사례에 맞게 조정하는 것 (“Mincha는 매일 Shkia보다 25분 전에 시작됩니다”).
- 시간 계산이 아닌 PHP Zmanim 라이브러리 함수와 메소드를 사용하는 것 — 주간 성경 구절, 히브리어 날짜, 특정 날짜가 공휴일인지 여부 (로쉬 코데쉬나 수코트 같은)를 확인하는 것을 포함합니다.
감사의 글
한 번 더, 모든 이것을 가능하게 한 분들께 감사의 말씀을 전해야 합니다. 이름 목록 가운데 가장 중요한 분은 PHP Zmanim 라이브러리를 유지보수하는 Zachary Weixelbaum이며, PHP Zmanim이 기반으로 하는 Kosher Java 라이브러리의 창조자인 Eliyahu Hershfeld입니다.
간단한 리프레셔
우리가 마지막에 그만두었을 때, 우리는 다음을 하는 견고한 기본 PHP 스크립트를 가졌습니다:
- 위치(위도/경도), 시간대, 고도에 대한 변수 설정
- 날짜 설정
- 해당 변수에서 php zmanim 객체 생성
- 일출부터 민하(mincha)에 이르기까지의 시간을 계산하기 위해 내장된 메서드 사용
이렇게 보였습니다:
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 페이지에 나와 있음)을 사용하여 다양한 시간을 가져올 수 있습니다. 예를 들어, 특정 라빈의 의견을 사용하여 Mincha Gedola를 얻기 위해 다음을 포함시킬 수 있습니다:
$gedolah = $zmanim->minchaGedola16Point1Degrees
지난 블로그에서 또한 PHP Zmanim의 format 메서드를 사용하여 출력을 더 가독성 있게 만드는 방법에 대해 다루었습니다:
$gedolah = $gedolah->format('g:i a');
“맛에 맞게 조절하기” — 시간 조정
당회에 많은 시간을 보내지 않는 사람들을 위해 (비난 없이, 부끄러움 없이, 여전히 여기서 환영합니다) 명백하지 않을 수 있지만 — 시간의 이름과는 상관없이, Mincha (오후 기도)를 Mincha Ketana, Mincha Gedola 또는 Plag haMincha에서 기도하는 기관은 매우 적습니다.
사실, 시간을 계산하는 작업 중 많은 부분이 직접적인 “Mincha Gedola는 몇 시인가?”보다는 “모두가 일을 마치고 여기에 도착할 시간이 있지만 저녁을 놓치지 않을 정도로 너무 늦게 일정을 잡아도 되는 시간은 언제인가?”에 더 많은 관련이 있습니다.
이론적으로 너무 복잡하다면, 주간 일정을 설정할 때 고려하는 논리적인 징가 퍼즐을 공유할 수 있도록 허용해 주십시오:
- 금요일 밤 초롱불 켜기: Shkia (일몰)에서 18분을 뺀 시간
- 여름 금요일 Mincha: Plag haMincha ( “plagHaminchaAteretTorah” 사용)에서 20분을 뺀 시간
- 겨울 금요일 Mincha: Shkia (일몰)에서 22분을 뺀 시간
- 토요일 Mincha: Shkia에서 40분을 뺀 시간
- 토요일 Ma’ariv: Shkia에 50분을 더한 시간
- 토요일 새벽: Shkia에 45분을 더한 시간
- 평일 Mincha: 주간의 가장 일찍인 Shkia를 찾아서 17분을 뺀 시간
이전 블로그에서 다룬 모든 다른 시간들은 여전히 중요하지만, 아마도 예상보다 덜 중요하다는 것을 깨닫고 계실 것입니다.
그래서 시간(예: shkia/일몰)을 가져와서 분을 더하거나 빼는 방법은 어떻게 하시나요? 이전에 사용한 동일한 스크립트로 시작하겠습니다:
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
당신은 위도, 경도, 시간대 등을 제공할 필요가 없다는 것을 알게 될 것입니다. 이 능력만으로도 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