alhazmy13 / HijriDatePicker

Material (Gregorian - Hijri) Date & Time Picker
alhazmy13.net
Apache License 2.0
138 stars 61 forks source link

minimum date is 1400 issue has been focused #47

Closed MusabAlothman closed 3 years ago

MusabAlothman commented 3 years ago

I can't set minimum date lower than 1400 so I can't use it for birthdate

Even if I set a date less than 1400 the date picker will ignore

        private fun showHijriCalendarDialog() {
        val yesterdayCalendar = UmmalquraCalendar()
        yesterdayCalendar.roll(Calendar.DAY_OF_YEAR, -1)
        val datePickerDialog =
            HijriDatePickerDialog.newInstance(
                { view, year, month, dayOfMonth ->
                    viewModel.birthDate = "$year/${month + 1}/$dayOfMonth"
                    birthDateTextView.text = viewModel.birthDate
                    (view as HijriDatePickerDialog).dismiss()

                },
                yesterdayCalendar.get(Calendar.YEAR),
                yesterdayCalendar.get(Calendar.MONTH),
                yesterdayCalendar.get(Calendar.DAY_OF_MONTH)
            )

        datePickerDialog.locale = Locale.getDefault()

        datePickerDialog.minDate = UmmalquraCalendar(1356, 1, 1)

        datePickerDialog.maxDate = yesterdayCalendar

        datePickerDialog.show(childFragmentManager, null)
    }
alhazmy13 commented 3 years ago

just use the last version of https://github.com/msarhan/ummalqura-calendar

MusabAlothman commented 3 years ago

Unfortunately even though you set default start date in 1400

MusabAlothman commented 3 years ago

I believe you should assign the below variable with 1300 to make the date picker suitable for birth date

private static final int DEFAULT_START_YEAR = 1300;

before was 1400

MusabAlothman commented 3 years ago

Dear Abdullah,

I figure out the issue

minDate function ignore the year for some reason check the below code

  private fun showHijriCalendarDialog() {
        val yesterdayCalendar = UmmalquraCalendar()
        yesterdayCalendar.roll(Calendar.DAY_OF_YEAR, -1)
        val datePickerDialog =
            HijriDatePickerDialog.newInstance(
                { view, year, month, dayOfMonth ->
                    viewModel.birthDate = "$year/${month + 1}/$dayOfMonth"
                    birthDateTextView.text = viewModel.birthDate
                    (view as HijriDatePickerDialog).dismiss()

                },
                yesterdayCalendar.get(Calendar.YEAR),
                yesterdayCalendar.get(Calendar.MONTH),
                yesterdayCalendar.get(Calendar.DAY_OF_MONTH)
            )

        datePickerDialog.locale = Locale.getDefault()

        datePickerDialog.minDate = UmmalquraCalendar(1300, 0, 1)//the issue is here the year here will be ignored

        datePickerDialog.minYear = 1300 //<====to walk around the issue I had to set the year after setting minDate

        datePickerDialog.maxDate = yesterdayCalendar

        datePickerDialog.show(childFragmentManager, null)
    }