בדוגמא זו יצרתי לוח שנה עברי חודשי עם אפשרות לעבור בין השנים ובין חודשי השנה השונים. ללוח השנה יש יתרון מסוים: הוא גם מציג את החגים העבריים ויתרון נוסף לעומת פונקצייה שנחום הציג פה בעבר הוא חוסר הצורך להתקין DLL בשרת כדי להשתמש בקוד.
איך עובד הקוד?
לב הקוד מורכב מפונקצייה אשר יודעת להמיר את התאריך הלועזי לתאריך עברי, בהמשך נסביר את הפונקצייה. בקוד עצמו קיימת לולאה אשר רצה על כל ימי החודש הנוכחי וקוראת לפונקצייה אשר מחזירה את התאריך העברי וקוראת לפונקצייה נוספת הבודקת אם יש חג באותו תאריך. הנתונים מוצגים באמצעות טבלה כאשר כל שורה מסמלת שבוע. בסוף הצגת הימים ישנו טופס המאפשר לנו לעבור בין החודשים והשנים.
פונקציית התאריכים
למעשה הפוקנציה מחולקת לשלוש. כאשר מתחילים לחשוב על תאריכים עבריים ומחשב לועזי... אנו נתקלים בכמה בעיות בסיסיות:
- המחשב יודע לחשב מספרים לא אותיות...
- ימי החודשים העבריים שונים מימי החודשים הלועזיים.
- לתאריכי החגים העבריים יש חוקים הלכתיים/אסטרונומיים שצריך לקחת אותם בחשבון.
- שמות החודשים במחשב הם באנגלית...
- ומה עושים עם שנה מעוברת?
ואלו רק חלק מהבעיות שיש למי שמנסה לבנות פונקציה כזאת. לשמחתי קם אדם "גאון" ושמו אליסף מובשוביץ שמוחו מיומן בתכנות כמו בהלכות קביעת החודשים היהודיים והכין תוכנית ב- vbscript משולבת עם js . עיקרי התוכנית הולכים כך: ישנן מספר פונקציות קבועות אשר תפקיד כל אחת מהן היא לפתור את כל הבעיות שתארתי למעלה. אדגיש את העיקריות שבהן:
השוואת שעות לוח העברי-לועזי
- אורכו של החודש ידוע לנו במסורת חז"ל: 29 ימים, 12 שעות ועוד 793/1080 של שעה (44 דקות ו-3.33 שניות). הקדמונים, מטעמי נוחות, חילקו את השעה ל-1080 חלקים, במקום החלוקה שאנו רגילים להשל 3600 שניות. ה"חלק" הוא 3 שניות ושליש.
- מציאת כל החודשים המעוברים של השנה.
- חישוב שנים מועברות על פי מחזור בן 19 השנים הידוע כ- 1/18 מהלוח הלועזי ומכפילה ב- 24 כדי להשוות עם הלוח הלועזי והתאמתו ללוח השמשי בהוספת 7 בכל פעם.
הפיכת אותיות למספרים
- הפיכת אותיות למספרים על פי שיטת הגימטריה הידועה, א=1 ק=100 וכו.
- החלפת מספרי החודשים בלולאת שנה לשם חודש עברי.
חישוב מולדי ירח בעייתים
פרטים ניתן למצוא באתר הבא: http://www.daat.ac.il/daat/shabat/luach/luach.htm
חגים
- החלפת מחרוזות תאריכים בשמות חגים.
- במקרים בעייתים (מבחינה הלכתית) הפונקצייה מבחינה אף בחגים וצומות שנדחו או שהוקדמו.
בניית המשתנים
- בניית משתנה תאריך עברי קטן, תאריך עברי כולל על ידי נטילת התאריך הלועזי ועיבודו בפונקציות שלעיל.
- מציאת היום הראשון בחודש והשנה וריצה בלולאה עד לסוף החודש תוך כדי שילוב הפונקציות שלעיל והתאמתם למשתני holyday, hebrwday.
עוגיות
- הכנסת המשתנים לעוגיה לשימוש חוזר על ידי הגולש.
וזה על קצה המזלג תקציר הפונקציה שבנה אליסף תוך הוכחת שליטה מדהימה בכל צפונות הלוח העברי והגבלותיו. כל מה שאני עשיתי זה לתרגם את זה לשפת asp כך שנוכל לקחת את המשתנים השונים ולהכניס אותם לדאטה בייס כאילו הם תאריך רגיל לכל דבר...
|