סדרת נתוני זמן: שאר הסיפור

כבר עבר זמן מאז שכתבתי על PHP Zmanim העבודה שעשיתי איתו והדברים שלמדתי במהלך היישום שלו. אבל למרות העיכוב, תמיד כיוונתי להמשיך את השיחה. זה מה שאנחנו עושים היום.

בפוסט הראשון שלי, הסברתי איך להתקין ולהתחיל לעבוד עם ספריית PHP Zmanim. אז, בפוסט הבא, חקרתי איך לחשב זמנים יותר מורכבים ואת הכוח האמיתי של הכלי — להחיל את דעות הרבנים הכי נפוצות לזמנים שונים. אני ממשיך מאיפה שהפסקתי בקצב מינימלי של התנגשות, אז אם צריך רגע כדי להתעדכן, קישרתי לפוסטים הקודמים ההם.

המטרה היום היא לחקור שימושים של PHP Zmanim היוצאים מעבר לשימוש יחסית ישיר של הספרייה. כולל:

  • לקחת זמן סטנדרטי ולהתאים אותו למקרים מיוחדים בבתי כנסת ("מנחה מתחילה 25 דקות לפני שקיעה כל יום").
  • להשתמש בפונקציות ובשיטות של ספריית PHP Zmanim המספקות חישובים לא-זמניים — כמו פרשת השבוע, התאריך העברי, והאם תאריך מסוים הוא חג (כמו ראש חודש או סוכות).

תודות

שוב אני צריך להתחיל על ידי להביע את הכרת טוב לאנשים שהביאו את כל זה למציאות. בראש הרשימה הארוכה של השמות עומד זכריה וייקסלבאום, מתחזק ספריית ה-PHP Zmanim עצמה, ואליהו הרשפלד, יוצר ספריית ה-Kosher Java על פי המבוסס PHP Zmanim.

קצת עידוד

כאשר עזבנו את זה, הייתה לנו תסריט PHP בסיסי ואיכותי שמבצע את הפעולות הבאות:

  • מגדיר משתנים עבור המיקום (ברוחב/אורך), יחד עם אזור הזמן והגובה.
  • מגדיר את התאריך
  • יוצר אובייקט zmanim ב-PHP מהמשתנים הללו
  • משתמש בשיטות המובנות כדי לחשב את הזמן המתאים לכל דבר מהזריחה עד המנחה ועד צאת הכוכבים

זה נראה כך:

PHP

 

אבל הזריחה היא רק ההתחלה. באמצעות כל אחת מהחישובים המובנים (שמתוארים בדף ה-GitHub ReadMe), אפשר להשיג מגוון רחב של זמנים. לדוגמה, כדי לקבל את המנחה גדולה בהתאם לדעת רבנית מסוימת, אפשר לכלול:

PHP

 

בבלוג האחרון, כיסיתי גם דרכים להשתמש בשיטת העיצוב של PHP Zmanim כדי להפוך את הפלט לנגיש יותר לקריאה:

PHP

 

"מלח על פי הטעם" – כיצד להתאים את הזמנים

לאלה שלא מבלים הרבה זמן בבית הכנסת (אין מדובר באשמה או בבושה, אתם מוזמנים בכל זאת), ייתכן שלא יהיה זה ברור, אך למרות השם של הזמן מעט מאוד ארגונים מתפללים מנחה במנחה קטנה, מנחה גדולה, או פלג המנחה.

למעשה, המון מהעבודה הנעשית בנוגע לחישוב זמנים קשורה לא כל כך לשאלה הישירה "מתי מנחה גדולה?" ויותר לשאלה "עד כמה מאוחר ביום אנחנו יכולים לקבוע מנחה בצורה סבירה כך שיהיה לכולם זמן להגיע לכאן אחרי העבודה; אך לא כל כך מאוחר עד שאף אחד לא מגיע כי הוא יחמיץ את הארוחת ערב?"

אם זה נשמע יותר תיאורטי מדי, אני אשתף אתכם בפאזל הלוגי של ג'נגה הבית הכנסת שלי עובר בעת קביעת הלוח השבועי:

  • הדלקת נרות ליל שישי: שקיעה פחות 18 דקות
  • מנחה שישי בקיץ: פלג המנחה (על פי "פלגהמנחהאתרתתורה") פחות 20 דקות
  • מנחה שישי בחורף: שקיעה פחות 22 דקות
  • מנחה שבת: שקיעה פחות 40 דקות
  • ערב שבת: שקיעה ועוד 50 דקות
  • סוף שבת: שקיעה ועוד 45 דקות
  • מנחה בימי השבוע: למצוא את השקיעה המוקדמת ביותר בשבוע, ולפחות 17 דקות

בזמן שכל הזמנים האחרים שכיסיתי בבלוגים קודמים עדיין חשובים, ייתכן שאתם מתחילים להבין שהם חשובים פחות מאשר יכול להיחשב.

אז, איך אתה לוקח זמן (כמו שקיעה) ואז מוסיף או מחסיר דקות? נתחיל עם אותו סקריפט שהיה לנו קודם:

PHP

 

על זה, נוסיף את הקוד לקבלת השקיעה:

PHP

 

ואז, נחסר 18 דקות כדי לקבל את זמן הדלקת הנרות:

PHP

 

נכון. אתה פשוט משתמש בפונקציה של PHP להמרת מחרוזות לזמן. אני מצטער אם החזקתי אותך במתח. אבל זה באמת כל כך פשוט.

מהי פרשת השבוע? מהו התאריך העברי? מתי ראש חודש?

(…ושאלות חיוניות אחרות אך מעצבנות שמוצגות לעיתים קרובות ביהדות שלך.)

יחד עם חישובי תאריכים, ספריית KosherJava (ולכן ספריית PHP Zmanim) כוללת שיטות ופונקציות לספק במהירות מידע כמו זה שנשאל למעלה.

הדבר הראשון שצריך להבין הוא שהאובייקט PHP Zmanim שעבדנו איתו עד כה היה אובייקט Zmanim אובייקט שיש לו סט של זמנים ספציפיים לתאריך מסוים. לדברים שקשורים לתאריכים עצמם, אנו יוצרים אובייקט jewishCalendar. החדשות הטובות הן שזה הרבה יותר קל ליצור. כל מה שאתה צריך זה שנה, חודש ויום.

PHP

 

עכשיו יש לנו אובייקט jewishCalendar לעבוד איתו ואפשר להשתמש בשיטות דומות לאלו שמצאנו עבור הזמנים. לדוגמה, אם נניח שהתאריך שבחרנו היה שבת, נוכל לקבל את פרשת השבוע:

PHP

 

(התעלם מהגדרת $format כרגע. נצלול לזה בעוד רגע).

אם היית מריץ את הקוד הזה, $parshaeng היה נותן לך:

PHP

 

תשימו לב שלא היה צורך לספק קו רוחב, קו אורך, אזור זמן וכו'. אני לא יכול להדגיש מספיק שיכולת זו בלבד – היכולת לקבל תאריכים, חלקי תורה ועוד עושה את ספריית PHP Zmanim שימושית בפני עצמה, אפילו ללא חישובי הזמן.

האם אני יכול לקבל את זה בעברית?

חלק התורה? כמובן! כאן נכנס הקו $format.

קודם כל, הסבר על מה זה: זו שיטה שמשנה אובייקטים כמו Zmanim וjewishCalendar, קובעת את אפשרויות התצוגה והפלט. קביעת Zmanim::format() ללא מידע נוסף ברירת המחדל היא באנגלית. אבל אז אתה יכול לומר למערכת שאתה רוצה עברית עם הקו הנוסף הזה:

PHP

 

עכשיו, אם תריץ את אותו json_decode(‘”‘ . $format->formatParsha($jewishCalendar) . ‘”‘) שורה, תקבל:

Plain Text

 

שילוב כל זה:

PHP

 

זה יציג: כי תבוא – Ki Savo.

איזה יום זה?

יותר ספציפית, איזה יום בעברית זה?

כמו בדוגמה הקודמת, אנחנו מתחילים עם jewishCalendar ואובייקט פורמט.

PHP

 

לאחר מכן, אנחנו מוסיפים את אותה שורה כדי לקבוע את הפורמט לעברית.

PHP

 

ולבסוף (ושוב בצורה פשוטה למדי), אנחנו מבקשים פלט של אובייקט לוח שנה רגיל:

PHP

 

זה בדיוק מה שאתה צריך. התוצאה היא משהו כזה:

Plain Text

 

כן, למרות שציינו setHebrewFormat, זה יצא באנגלית.

האם אני יכול לקבל את זה בעברית אמיתית?

כדי להציג את התאריך העברי בשלמותו בעברית גם המילים וגם האותיות אנו קוראים לשיטה מעט שונה בשם, באופן הולם, HebrewDateFormatter.

בהנחה (שוב) שהתקנתם את המשתנים הראשוניים ויצרתם אובייקט jewishCalendar, הקוד להצגת תאריך בעברית יהיה:

PHP

 

שיתן לכם:

Plain Text

 

האם היום הוא היום?

לעיתים קרובות יש צורך לבדוק אם תאריך מסוים הוא… כזה כמו ראש חודש או חלק מחג שני (כמו סוכות).

מתברר כי שיטת PHP Zmanim עושה את זה מאוד פשוט. בהנחה שהתחלתם באותו אופן כמו בדוגמאות האחרות, לאחר שהגדרתם את אובייקט jewishCalendar, זה כל כך פשוט:

PHP

 

אם התאריך מתאים לחג, זה יחזיר "נכון" ותוכלו להמשיך עם כל הלוגיקה או התהליך שתרצו, כגון הצגת התאריך (או לא).

אז מה הבא?

אמינו או לא, עדיין יש עוד לכסות. בשבועות בהם אגיע (כשאגיע), אשמח לכסות דרכים לנצל את פונקציות האסטרונומיה המובנות לחישובי זמן. אמינו או לא, זה יכול להיות חשוב באופן אמיתי בקשר לקבלת זמנים מדויקים לדברים כמו תחילת וסיום שבת וחגים, יחד עם תקנות אחרות.

בינתיים, אם יש משהו נוסף שתרצו שאכסה או אם יש לכם שאלות, תיקונים או שבחים, נשמח אם תשאירו אותם בתגובות למטה.

Source:
https://dzone.com/articles/time-data-series-the-rest-of-the-story