שיתוף | ספרייה לבורר תאריך עברי HebrewDatePicker
-
למי שרוצה בניתי ספרייה לאנדרואיד לבחירת תאריך עם תאריך עברי
HebrewDatePicker: בורר תאריך עברי לאנדרואיד
מינימום SDKminSdk = 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() }
- מבנה ואפשרויות 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 ו-HebrewDate3.2. מחלקת PickerMode (בשימוש רק ב-HebrewDatePickerDialog)
CALENDAR
תצוגת לוח שנה חודשי עברי.- הקולבקים (Callbacks)
4.1.
.onGregorianSelected { selectedDate -> ... }
מופעל כשהמשתמש מסיים לבחור תאריך. מחזיר אובייקט LocalDate.
(LocalDate) -> Unit
GREGORIAN או BOTH
4.2..onHebrewSelected { hebrewDate -> ... }
מופעל כשהמשתמש מסיים לבחור תאריך. מחזיר מודל HebrewDate.
(HebrewDate) -> Unit
HEBREW או BOTH- המרת התאריך (גמישות בפורמט ו-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 }