דילוג לתוכן
  • חוקי הפורום
  • פופולרי
  • לא נפתר
  • משתמשים
  • חיפוש גוגל בפורום
  • צור קשר
עיצובים
  • בהיר
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • כהה
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • ברירת מחדל (ללא עיצוב (ברירת מחדל))
  • ללא עיצוב (ברירת מחדל)
כיווץ
מתמחים טופ
  1. דף הבית
  2. אנדרואיד - כללי
  3. הפורום למפתחים
  4. שיתוף | ספרייה לבורר תאריך עברי HebrewDatePicker

שיתוף | ספרייה לבורר תאריך עברי HebrewDatePicker

מתוזמן נעוץ נעול הועבר הפורום למפתחים
1 פוסטים 1 כותבים 122 צפיות 1 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • E מנותק
    E מנותק
    elhanan
    כתב נערך לאחרונה על ידי
    #1

    למי שרוצה בניתי ספרייה לאנדרואיד לבחירת תאריך עם תאריך עברי

    HebrewDatePicker: בורר תאריך עברי לאנדרואיד
    מינימום SDK

    minSdk = 26
    

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

    התקנה
    1.1. תלות בגריידל
    וודא שיש לך את jitpack (בקובץ setting.gradel.kts גם בתוך pluginManagement וגם ב dependencyResolutionManagement)

    maven("https://jitpack.io")
    

    כדי להשתמש בספרייה, הוסף את התלות (תלות) הבאה לקובץ ה-Gradle של המודול שלך (app/build.gradle.kts):

    // build.gradle.kts (רמת מודול:app)
    
    dependencies {
     implementation("com.github.FAISEL95595:HebrewDatePicker:1.5.1") // גרסה אחרונה כרגע
     }
    

    שימוש והפעלה (דוגמאות)
    הספרייה מספקת שני דיאלוגים ראשיים: HebrewDateWheelDialog (גלגלת) ו-HebrewDatePickerDialog (לוח שנה).

    2.1. ייבוא ​​נדרש

    בפעילות (פעילות) או בפרגמנט שבו אתה מציג את הדיאלוג:

    import com.faisel.hebrewdatepicker.ui.HebrewDateWheelDialog // אם אתה רוצה ספינר/גלגלת
    import com.faisel.hebrewdatepicker.ui.HebrewDatePickerDialog // אם אתה רוצה בורר רגיל
    import com.faisel.hebrewdatepicker.ui.OutputType
    import com.faisel.hebrewdatepicker.ui.PickerMode
    import com.faisel.hebrewdatepicker.model.HebrewDate
    import java.time.LocalDate // אם אתה רוצה שיחזיר תאריך גרגוריאני
    import java.time.ZoneId // נדרש להמרה ל-Timestamp
    import java.time.format.DateTimeFormatter // אם אתה רוצה לשנות את הפורמט של התאריך
    
    

    2.2. הפעלת בורר הגלגלת (HebrewDateWheelDialog)

    הדיאלוג הזה משתמש בתצוגת גלגלים לבחירת יום, חודש ושנה.

    private fun showHebrewWheelDialog() {
        // הגדרת תאריך התחלתי (לדוגמה, התאריך שנבחר כרגע או Date())
        val initialDate = selectedCalendar.time 
        HebrewDateWheelDialog.Builder(this)
            .setDate(initialDate) 
            .setOutputType(OutputType.GREGORIAN) // מחזיר רק תאריך לועזי (LocalDate)
            .onGregorianSelected { selectedDate ->   
                // --- אפשרות א: שינוי פורמט התאריך (מחרוזת) ---
                val formatter = DateTimeFormatter.ofPattern("EEEE, dd/MM/yyyy") // לדוגמה: יום, 20/10/2025
                val formattedDateString = selectedDate.format(formatter)
                // --- אפשרות ב: קבלת Timestamp ---
                val timestampInMilliseconds: Long = selectedDate
                    .atStartOfDay(ZoneId.systemDefault()) 
                    .toInstant()
                    .toEpochMilli()
                // עדכון הממשק
                binding.tvGregorianDate.text = formattedDateString
                // ... שמירת ה-Timestamp ...
            }
            .onHebrewSelected { hebrewDate ->
                 // קולבק זה יופעל גם אם OutputType.BOTH מוגדר
                 // hebrewDate מכיל: יום (Int), חודש (Int), שנה (Int), חודש עברי (String)
                 // Toast.makeText(this, "התאריך העברי: ${hebrewDate.hebrewMonthName} ${hebrewDate.hebrewDay}", Toast.LENGTH_SHORT).show()
            }
            .build()
            .show()
    }
    

    2.3. הפעלת בורר לוח השנה (HebrewDatePickerDialog)

    הדיאלוג הזה משתמש בתצוגת לוח שנה.

    private fun showHebrewCalendarDialog() {
        // שימו לב: HebrewDatePickerDialog דורש גם הגדרת PickerMode
        HebrewDatePickerDialog.Builder(this)
            .setMode(PickerMode.CALENDAR)
            .setOutputType(OutputType.BOTH) // יחזיר גם עברי וגם לועזי
            // אין אפשרות setDate בפיקר הזה, הוא מתחיל מהתאריך הנוכחי
            .onGregorianSelected { selectedDate -> 
                // ... לוגיקה ...
            }
            .onHebrewSelected { hebrewDate ->
                 // ... לוגיקה ...
            }
            .build()
            .show()
    }
    
    1. מבנה ואפשרויות API מפורטות

    3.1. מחלקת OutputType

    זהו enum class המגדיר את הפורמט של התוצאה שתחזור מהדיאלוג. יש לקרוא לאחד מהקולבקים המתאימים (onGregorianSelected או onHebrewSelected) בהתאם ל-OutputType שבחרת.

    .setOutputType(OutputType.HEBREW)
    .setOutputType(OutputType.GREGORIAN)
    .setOutputType(OutputType.BOTH)
    

    שימושב:

    HEBREW
    

    יחזיר רק את התאריך העברי.

    .onHebrewSelected
    com.faisel.hebrewdatepicker.model.HebrewDate
    

    שימוש ב:

    GREGORIAN
    

    יחזיר רק את התאריך הלועזי.

    .onGregorianSelected
    java.time.LocalDate
    

    שימוש ב:

    BOTH
    

    יחזיר את שני סוגי התאריכים.
    אחד או שני הקולבקים
    LocalDate ו-HebrewDate

    3.2. מחלקת PickerMode (בשימוש רק ב-HebrewDatePickerDialog)

    CALENDAR
    תצוגת לוח שנה חודשי עברי.

    1. הקולבקים (Callbacks)
      4.1.
    .onGregorianSelected { selectedDate -> ... }
    

    מופעל כשהמשתמש מסיים לבחור תאריך. מחזיר אובייקט LocalDate.
    (LocalDate) -> Unit
    GREGORIAN או BOTH
    4.2.

    .onHebrewSelected { hebrewDate -> ... }
    

    מופעל כשהמשתמש מסיים לבחור תאריך. מחזיר מודל HebrewDate.
    (HebrewDate) -> Unit
    HEBREW או BOTH

    1. המרת התאריך (גמישות בפורמט ו-Timestamp)

    הספרייה מחזירה אובייקטים מובנים (LocalDate ו-HebrewDate), המאפשרים לך לעצב את הפלט כרצונך.

    5.1. שליטה מלאה בפורמט ה-String

    כדי לשנות את סדר היום/חודש/שנה או את אופן ההצגה (כמו הוספת שם יום או חודש מלא), השתמש ב-DateTimeFormatter בתוך הקולבק:

    .onGregorianSelected { selectedDate ->
        // יום בשבוע מלא, יום נומרי, חודש נומרי, שנה מלאה (לדוגמה: Monday, 20-10-2025)
        val customFormatter = DateTimeFormatter.ofPattern("EEEE, dd-MM-yyyy") 
        val dateDisplay = selectedDate.format(customFormatter)
        // ...
    }
    

    5.2. המרה ל-Timestamp (מספר)
    כדי לקבל את התאריך כ-Timestamp (Long - מספר המילישניות מאז $1970$):

    .onGregorianSelected { selectedDate ->
        val timestampInMilliseconds: Long = selectedDate
            .atStartOfDay(ZoneId.systemDefault()) // המרת תחילת היום באזור זמן מקומי
            .toInstant()
            .toEpochMilli() // התוצאה היא מספר ה-Timestamp
    Toast.makeText(this, "Timestamp: $timestampInMilliseconds", Toast.LENGTH_LONG).show() //דוגמה לקבלת output
    }
    
    תגובה 1 תגובה אחרונה
    3

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

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

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

    הרשמה התחברות

    • התחברות

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

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