דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. קבלת תאריך עברי של היום בשפת JS

קבלת תאריך עברי של היום בשפת JS

מתוזמן נעוץ נעול הועבר תכנות
18 פוסטים 6 כותבים 3.1k צפיות 6 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • dovidD
    dovidD
    dovid
    ניהול
    כתב ב נערך לאחרונה על ידי dovid
    #8

    @5566brs מדהים.. אני לא רואה שהתמודדת עם שני האדרים, איך זה עובד שזה לא תמיד יחזיר אדר ב' עבור ניסן ואילך?

    • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
    • בכל נושא אפשר ליצור קשר dovid@tchumim.com
    תגובה 1 תגובה אחרונה
    0
    • 5
      5
      5566brs
      כתב ב נערך לאחרונה על ידי
      #9

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

      dovidD תגובה 1 תגובה אחרונה
      1
      • 5 5566brs

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

        dovidD
        dovidD
        dovid
        ניהול
        כתב ב נערך לאחרונה על ידי dovid
        #10

        נעזרתי בזה
        https://www.dafaweek.com/HebCal/HebCalSampleSource.php

        function getHebDate(date) {
            function IsLeapYear(nYearH) {
                switch (nYearH % 19) {
                    case 0: case 3: case 6: case 8: case 11: case 14: case 17: return true;
                    default: return false;
                }
            }
        
            const [mobj, cobj] = [['תשרי', 'חשון', 'כסליו', 'טבת', 'שבט', 'אדר', 'ניסן', 'אייר', 'סיון', 'תמוז', 'אב', 'אלול'], 'אבגדהוזחטיכלמנסעפצקרשת'.split('')].map(a => Object.fromEntries(a.map((e, i) => [i + 1, e])))
            const toHebCount = n => String(n).split('').toReversed().map((e, i) => cobj[i ? (i * 9) + Number(e) : Number(e)]).toReversed().filter(Boolean).join('"').replace('י"ה', 'ט"ו').replace('י"ו', 'ט"ז').padEnd(2, "'")
            let [d, m, y] = Intl.DateTimeFormat('en-u-ca-hebrew', { year: '2-digit', month: 'narrow', day: 'numeric' }).format(date || new Date()).split(' ');
            m = Number(m);
        
            let month = mobj[m];
            if(+m > 5 &&  IsLeapYear(5700 + Number(y))){
                if(m === 6) month = 'אדר א';
                else if(m === 7) month = 'אדר ב';
                else month = mobj[m-1];
            }
        
            return `${toHebCount(d)} ${month} תש${toHebCount(y)}`;
        }
        
        • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
        • בכל נושא אפשר ליצור קשר dovid@tchumim.com
        ש 2 תגובות תגובה אחרונה
        3
        • dovidD dovid

          נעזרתי בזה
          https://www.dafaweek.com/HebCal/HebCalSampleSource.php

          function getHebDate(date) {
              function IsLeapYear(nYearH) {
                  switch (nYearH % 19) {
                      case 0: case 3: case 6: case 8: case 11: case 14: case 17: return true;
                      default: return false;
                  }
              }
          
              const [mobj, cobj] = [['תשרי', 'חשון', 'כסליו', 'טבת', 'שבט', 'אדר', 'ניסן', 'אייר', 'סיון', 'תמוז', 'אב', 'אלול'], 'אבגדהוזחטיכלמנסעפצקרשת'.split('')].map(a => Object.fromEntries(a.map((e, i) => [i + 1, e])))
              const toHebCount = n => String(n).split('').toReversed().map((e, i) => cobj[i ? (i * 9) + Number(e) : Number(e)]).toReversed().filter(Boolean).join('"').replace('י"ה', 'ט"ו').replace('י"ו', 'ט"ז').padEnd(2, "'")
              let [d, m, y] = Intl.DateTimeFormat('en-u-ca-hebrew', { year: '2-digit', month: 'narrow', day: 'numeric' }).format(date || new Date()).split(' ');
              m = Number(m);
          
              let month = mobj[m];
              if(+m > 5 &&  IsLeapYear(5700 + Number(y))){
                  if(m === 6) month = 'אדר א';
                  else if(m === 7) month = 'אדר ב';
                  else month = mobj[m-1];
              }
          
              return `${toHebCount(d)} ${month} תש${toHebCount(y)}`;
          }
          
          ש
          ש
          ששא
          כתב ב נערך לאחרונה על ידי
          #11

          @dovid מדהים!
          אבל איזה מספר הוא מחזיר על ניסן בשנה מעוברת ואיזה בשנה לא מעוברת?

          תגובה 1 תגובה אחרונה
          0
          • dovidD dovid

            נעזרתי בזה
            https://www.dafaweek.com/HebCal/HebCalSampleSource.php

            function getHebDate(date) {
                function IsLeapYear(nYearH) {
                    switch (nYearH % 19) {
                        case 0: case 3: case 6: case 8: case 11: case 14: case 17: return true;
                        default: return false;
                    }
                }
            
                const [mobj, cobj] = [['תשרי', 'חשון', 'כסליו', 'טבת', 'שבט', 'אדר', 'ניסן', 'אייר', 'סיון', 'תמוז', 'אב', 'אלול'], 'אבגדהוזחטיכלמנסעפצקרשת'.split('')].map(a => Object.fromEntries(a.map((e, i) => [i + 1, e])))
                const toHebCount = n => String(n).split('').toReversed().map((e, i) => cobj[i ? (i * 9) + Number(e) : Number(e)]).toReversed().filter(Boolean).join('"').replace('י"ה', 'ט"ו').replace('י"ו', 'ט"ז').padEnd(2, "'")
                let [d, m, y] = Intl.DateTimeFormat('en-u-ca-hebrew', { year: '2-digit', month: 'narrow', day: 'numeric' }).format(date || new Date()).split(' ');
                m = Number(m);
            
                let month = mobj[m];
                if(+m > 5 &&  IsLeapYear(5700 + Number(y))){
                    if(m === 6) month = 'אדר א';
                    else if(m === 7) month = 'אדר ב';
                    else month = mobj[m-1];
                }
            
                return `${toHebCount(d)} ${month} תש${toHebCount(y)}`;
            }
            
            ש
            ש
            ששא
            כתב ב נערך לאחרונה על ידי
            #12

            @dovid אם אני רוצה להחזיר לפי תאריך מסויים - מה אני צריך להעביר לפונקצייה? איזה פורמט?
            ניסיתי להעביר לו 12/4/2024 והוא מחזיר לי מספר חודש עברי 4 וכך גם 12/5/2024

            5 תגובה 1 תגובה אחרונה
            0
            • dovidD
              dovidD
              dovid
              ניהול
              כתב ב נערך לאחרונה על ידי
              #13

              @ששא אתה יודע JS? אתה יודע להתעסק טיפה עם האובייקט date?

              • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
              • בכל נושא אפשר ליצור קשר dovid@tchumim.com
              ש תגובה 1 תגובה אחרונה
              0
              • dovidD dovid

                @ששא אתה יודע JS? אתה יודע להתעסק טיפה עם האובייקט date?

                ש
                ש
                ששא
                כתב ב נערך לאחרונה על ידי
                #14

                @dovid כן
                5ccfe166-8ec4-4460-8664-e07a70fac297-image.png

                תגובה 1 תגובה אחרונה
                0
                • ש ששא

                  @dovid אם אני רוצה להחזיר לפי תאריך מסויים - מה אני צריך להעביר לפונקצייה? איזה פורמט?
                  ניסיתי להעביר לו 12/4/2024 והוא מחזיר לי מספר חודש עברי 4 וכך גם 12/5/2024

                  5
                  5
                  5566brs
                  כתב ב נערך לאחרונה על ידי
                  #15

                  @ששא

                  לשאלתך, כדי לקבל את התאריך של מחר (לדוגמא) תוכל להכניס:

                  getHebDate(new Date(2024,1,7))
                  

                  החודש הוא 1 כי החודשים מתחילים מ-0 (לא ידוע לי מדוע).

                  הפונקציה לעיל תוקנה, אחרי ההערות של ועם הקוד שהביא @dovid.

                  ש תגובה 1 תגובה אחרונה
                  1
                  • 5 5566brs

                    @ששא

                    לשאלתך, כדי לקבל את התאריך של מחר (לדוגמא) תוכל להכניס:

                    getHebDate(new Date(2024,1,7))
                    

                    החודש הוא 1 כי החודשים מתחילים מ-0 (לא ידוע לי מדוע).

                    הפונקציה לעיל תוקנה, אחרי ההערות של ועם הקוד שהביא @dovid.

                    ש
                    ש
                    ששא
                    כתב ב נערך לאחרונה על ידי
                    #16

                    @5566brs

                    @ששא כתב בקבלת תאריך עברי של היום בשפת JS:

                    אבל איזה מספר הוא מחזיר על ניסן בשנה מעוברת ואיזה בשנה לא מעוברת?

                    5 תגובה 1 תגובה אחרונה
                    0
                    • ש ששא

                      @5566brs

                      @ששא כתב בקבלת תאריך עברי של היום בשפת JS:

                      אבל איזה מספר הוא מחזיר על ניסן בשנה מעוברת ואיזה בשנה לא מעוברת?

                      5
                      5
                      5566brs
                      כתב ב נערך לאחרונה על ידי
                      #17

                      @ששא כתב בקבלת תאריך עברי של היום בשפת JS:

                      תמיד 8.

                      תגובה 1 תגובה אחרונה
                      1
                      • 5
                        5
                        5566brs
                        כתב ב נערך לאחרונה על ידי
                        #18

                        מכיון שהעירו שהפונקציה לא תעבוד אחרי סוף עידן ה"תש", מצ"ב פונקציה משודרגת..
                        תודה ל@meir-lamdan שהביא לידיעתי את הפונקציה להמרת של ספירה בלש"ק.

                        const getHebDate2 = date => {
                            const toHebCount = n => [...'ת'.repeat(Math.floor(n / 400)), ..."קרש"[Math.floor(n % 400 / 100) - 1] ?? [], ...n % 100 === 15 ? ['טו'] : n % 100 === 16 ? ['טז'] : [..."יכלמנסעפצ"[Math.floor(n % 100 / 10) - 1] ?? [], ..."אבגדהוזחט"[n % 10 - 1] ?? []]].toSpliced(-1,0, '"').join('').replace(/^"|"$/g, '').padEnd(2, "'");
                            const getX = opt => Intl.DateTimeFormat('he-u-ca-hebrew', { [opt]: 'numeric' }).format(date || new Date());
                            return [toHebCount(getX('day')), getX('month'), toHebCount(getX('year') % 1e3)].join(' ');
                        }
                        

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

                        תגובה 1 תגובה אחרונה
                        2

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

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

                        בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗

                        הרשמה התחברות
                        תגובה
                        • תגובה כנושא
                        התחברו כדי לפרסם תגובה
                        • מהישן לחדש
                        • מהחדש לישן
                        • הכי הרבה הצבעות


                        בא תתחבר לדף היומי!
                        • התחברות

                        • אין לך חשבון עדיין? הרשמה

                        • התחברו או הירשמו כדי לחפש.
                        • פוסט ראשון
                          פוסט אחרון
                        0
                        • דף הבית
                        • קטגוריות
                        • פוסטים אחרונים
                        • משתמשים
                        • חיפוש
                        • חוקי הפורום