חישוב תאריך עברי על פי שדה תאריך לועזי

Submitted by אמיר סימן טוב on ב', 09/14/2009 - 00:52
פורומים

אתה צריך לעבור קודם ליולאני, ואח"כ לעברי.
משהו כזה:
<?php
$jd = gregoriantojd($month, $day, $year);
$hebrewDate = jdtojewish($jd);
?>

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

היי יובל הערך של value של השדה שכתבתי למעלה הנו אחרי פרמוט:

רביעי, 28/10/2009 - 20:00

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

מה אומר?...

היי יובל, טעיתי. הערך של value הוא דווקא לא מפורמט: 2009-09-13T17:00:00

באיזה פונקציות אליי להשתמש כדי להוציא מזה את היום, החודש והשנה על-מנת להשתמש בפונקציה gregoriantojd שהזכרת?

לחילופין, האם יש פונקציה שמקבלת ישר את הערך הזה ומחזירה ערך יוליאני?

תודה..

הנה, במיוחד בשבילך פונקציה כזו:

<?php
function gregoriantojewish($date) {
$ts = strtotime($date);
$jd = gregoriantojd(date('m', $ts), date('j', $ts), date('Y', $ts));
$hmonth = jdmonthname($jd, 4);
$hd = jdtojewish($jd);
list($hm, $hday, $hyear) = split('/', $hd);
return "$hday $hmonth $hyear";
}

print gregoriantojewish($node->field_event_time[0]['value']);
?>

עובד!

עכשיו כשזה עובד, אני רוצה שזה יהיה לכולם.

מה הכי נכון? לעשות רכיב CCK שמשתמש ברכיב computed_field.module? זה נראה לכם מסובך?

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

אמיר

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

-----

בדרך חתחתים הגעתי לקוד הבא, אבל הוא לא נותן את התאריך הנכון:

<?php
$timestamp = $node->field_event_time[0]['value'];
//2009-09-13T17:00:00
$format = '%Y-%m-%d%TH:%M:%S';
$strf = strftime($format);
$time_array = strptime($strf, $format);
$jd = gregoriantojd($time_array[tm_mon], $time_array[tm_mday], $time_array[tm_year]);
$hebrewDate = jdtojewish($jd);
$node_field[0]['value'] = $hebrewDate;
?>

התאריך שמתקבל הוא 13/3/3869

זה רחוק כמעט 4,000 שנה מהתאריך הנכון, ובכלל לא מפורמט...

אם ככה אז מודול בדרופל.אורג.
קודם כל תבנה את זה כ API, ואח"כ אתה יכול להוסיף תצוגה (formatter) לשדה date של CCK.

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

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

אני בטוח עוזרת מאוד עם הערות שלי אהה ?
:)

אמיר,
בעמוד בדרופל.קום יש קישור שבור לקובץ הקוד.

אני מנסה להוסיף לCalander אפשרות להציג בצד התאריך הלועזי גם תאריך עברי. משהו כבר עשה את זה? האם יש הוראות הפעלה?

יום נפלא,
דניאל

אני בטוח שתהיה דרישה למודול הזה.

הייתי ממליץ לתת גם את האפשרות להצגת תאריך עברי אבל באנגלית. דוגמה:
Elul 19 5769

כך אתה פותח את המודול לשימוש של הקהילה הדתית בארה"ב וברחבי העולם שמרבים להשתמש בתאריך העברי אבל באנגלית.

ניסיתי למצוא כאן אם מישהו עשה את זה ולא מצאתי.

אני משתמש בשדה CCK השומר תאריך. אני רוצה להשתמש באמצעות computed_field.module בערך הנשמר על מנת להציג את התאריך העברי.

איך עושים זאת?

ישנה הפונקציה jdtojewish (חלון חדש) אבל היא זורקת נעל עבור הקוד:

$node->field_event_time[0]['value']

האם צריך המרת-ביניים כלשהי?

למה בכלל מערבים את הלוח היוליאני (jdtojewish ה-j זה אומר יוליאני) ואין פונקציית שפה מגרגוריאני לתאריך עברי?

תשובות, רעיונות ותפוחים בדבש יתקבלו בברכה.