Wie setze ich das maximale Datum im Datepicker-Dialog in Android?

Lesezeit: 5 Minuten

In meiner Anwendung verwende ich die Datumsauswahl, um das Datum festzulegen. Ich möchte das maximale Datum der Datumsauswahl als heutiges Datum gemäß dem Systemdatum festlegen. Ich weiß nicht, wie ich das maximale Datum der Datumsauswahl als heutiges Datum festlegen soll. Kann mir jemand helfen? um dieses Problem zu lösen.

Meine Datumsauswahl-Codierung lautet:

private int pYear;
private int pMonth;
private int pDay;
static final int DATE_DIALOG_ID = 0;

final Calendar c = Calendar.getInstance();
pYear = c.get(Calendar.YEAR);
pMonth = c.get(Calendar.MONTH);
pDay = c.get(Calendar.DAY_OF_MONTH);

// Date picker
public Dialog onCreateDialog(int id) {
    switch (id) {
    case DATE_DIALOG_ID:

        DatePickerDialog.OnDateSetListener pDateSetListener = new DatePickerDialog.OnDateSetListener() {

            public void onDateSet(DatePicker view, int year,
                    int monthOfYear, int dayOfMonth) {

                pYear = year;
                pMonth = monthOfYear;
                pDay = dayOfMonth;

                e_dob.setText(new StringBuilder()
                        // to set date in editext
                        .append(pDay).append("https://stackoverflow.com/").append(pMonth + 1)
                        .append("https://stackoverflow.com/").append(pYear).append(" "));
            }
        };
        return new DatePickerDialog(this, pDateSetListener, pYear, pMonth,
                pDay);

    }
    return null;
}

Verwenden setMaxDate().

Zum Beispiel ersetzen return new DatePickerDialog(this, pDateSetListener, pYear, pMonth, pDay) Aussage etwa so:

    DatePickerDialog dialog = new DatePickerDialog(this, pDateSetListener, pYear, pMonth, pDay);
    dialog.getDatePicker().setMaxDate(new Date().getTime());
    return dialog;

  • Deine Antwort verdient auch eine positive Bewertung ;), du zeigst den kurzen Weg!

    – Yoann Hercouet

    25. Mai 2013 um 12:25 Uhr


  • Versuchen Sie Folgendes, um das maximale Datum für alle APIs festzulegen gist.github.com/Kishanjvaghela/7b8738bbb224c5f2e652

    – Kishan Vaghela

    5. Oktober 2015 um 7:56 Uhr

  • Nach dem Einstellen der setMaxDate von datePicker die setMaxDate ist immer markiert und ausgewählt, hier ist die Bild

    – hasnain_ahmad

    15. Juni 2017 um 4:41 Uhr

  • @hasnain_ahmad Ja das ist mir auch aufgefallen, ich habe noch keine Lösung gefunden.

    – Nikolaus

    30. Dezember 2017 um 2:57 Uhr

1641759834 463 So fugen Sie Kartenansicht in Layout XML in AndroidX hinzu
ugali weich

Holen Sie sich das heutige Datum (& Uhrzeit) und verwenden Sie sie als maximales Datum.

Calendar c = Calendar.getInstance();
c.set(2017, 0, 1);//Year,Mounth -1,Day
your_date_picker.setMaxDate(c.getTimeInMillis());

AUCH WIR KÖNNEN DAS TUN (überprüfen Sie diese Stackoverflow-Antwort für System.currentTimeMillis() vs. Calendar-Methode)

long now = System.currentTimeMillis() - 1000;
dp_time.setMinDate(now);
dp_time.setMaxDate(now+(1000*60*60*24*7)); //After 7 Days from Now

  • Bitte fügen Sie eine Erklärung hinzu, was der Code tut.

    – Saifur

    7. März 2015 um 6:07 Uhr

  • Dies ist die perfekte und tatsächliche Antwort, um ein maximales Datum festzulegen

    – Anand Savjani

    29. Januar 2016 um 5:22 Uhr

  • Ich habe nach einem Mindestdatum gesucht, das auch funktioniert. Danke!

    – superUser

    8. Mai 2017 um 14:04 Uhr

Sie können versuchen, diese Zeile zu ersetzen:

return new DatePickerDialog(this, pDateSetListener, pYear, pMonth, pDay);

Von denen:

DatePickerDialog dpDialog = new DatePickerDialog(this, pDateSetListener, pYear, pMonth, pDay);
DatePicker datePicker = dpDialog.getDatePicker();

Calendar calendar = Calendar.getInstance();//get the current day
datePicker.setMaxDate(calendar.getTimeInMillis());//set the current day as the max date
return dpDialog;

Wie setze ich das maximale Datum im Datepicker Dialog in Android
Sunil

Versuche dies

Ich habe zu viele Lösungen ausprobiert, aber keine davon hat funktioniert. Nachdem ich meinen halben Tag verschwendet hatte, habe ich endlich eine Lösung gefunden.

Dieser Code zeigt Ihnen einfach einen DatePickerDialog mit minimalem und maximalem Datum, Monat und Jahr, was immer Sie wollen, ändern Sie es einfach.

final Calendar calendar = Calendar.getInstance();
                DatePickerDialog dialog = new DatePickerDialog(getActivity(), new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(DatePicker arg0, int year, int month, int day_of_month) {
                        calendar.set(Calendar.YEAR, year);
                        calendar.set(Calendar.MONTH, (month+1));
                        calendar.set(Calendar.DAY_OF_MONTH, day_of_month);
                        String myFormat = "dd/MM/yyyy";
                        SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.getDefault());
                        your_edittext.setText(sdf.format(calendar.getTime()));
                    }
                },calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
                dialog.getDatePicker().setMinDate(calendar.getTimeInMillis());// TODO: used to hide previous date,month and year
                calendar.add(Calendar.YEAR, 0);
                dialog.getDatePicker().setMaxDate(calendar.getTimeInMillis());// TODO: used to hide future date,month and year
                dialog.show();

Ausgabe:-
Deaktivieren Sie den vorherigen und zukünftigen Kalender

Geben Sie hier die Bildbeschreibung ein

private int pYear;
private int pMonth;
private int pDay;
static final int DATE_DIALOG_ID = 0;

/**inside oncreate */
final Calendar c = Calendar.getInstance();
         pYear= c.get(Calendar.YEAR);
         pMonth = c.get(Calendar.MONTH);
         pDay = c.get(Calendar.DAY_OF_MONTH);


 @Override
     protected Dialog onCreateDialog(int id) {
             switch (id) {
             case DATE_DIALOG_ID:
                     return new DatePickerDialog(this,
                             mDateSetListener,
                             pYear, pMonth-1, pDay);
            }

             return null;
     }
     protected void onPrepareDialog(int id, Dialog dialog) {
             switch (id) {
             case DATE_DIALOG_ID:
                     ((DatePickerDialog) dialog).updateDate(pYear, pMonth-1, pDay);
                     break;
             }
     }   
     private DatePickerDialog.OnDateSetListener mDateSetListener =
         new DatePickerDialog.OnDateSetListener() {
         public void onDateSet(DatePicker view, int year, int monthOfYear,
                         int dayOfMonth) {
                // write your code here to get the selected Date
         }
 };

versuch das es sollte funktionieren. Danke

1646245987 84 Wie setze ich das maximale Datum im Datepicker Dialog in Android
Komal12

Verwenden Sie diesen Code direkt in der Hauptmethode, ich hoffe, er wird Ihnen helfen …

@RequiresApi(api = Build.VERSION_CODES.N)       
public DatePickerDialog datePickerDialog_db()
{

    DatePickerDialog pickerDialog = new DatePickerDialog(getApplicationContext(),your view, myCalendar.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
    myCalendar.get(Calendar.DAY_OF_MONTH));

    pickerDialog.getDatePicker().setMaxDate(Calendar.getInstance().getTimeInMillis());

    pickerDialog.show();

    return null;       
}

Hier ist eine Kotlin-Erweiterungsfunktion:

fun EditText.transformIntoDatePicker(context: Context, format: String, maxDate: Date? = null) {
    isFocusableInTouchMode = false
    isClickable = true
    isFocusable = false

    val myCalendar = Calendar.getInstance()
    val datePickerOnDataSetListener =
        DatePickerDialog.OnDateSetListener { _, year, monthOfYear, dayOfMonth ->
            myCalendar.set(Calendar.YEAR, year)
            myCalendar.set(Calendar.MONTH, monthOfYear)
            myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth)
            val sdf = SimpleDateFormat(format, Locale.UK)
            setText(sdf.format(myCalendar.time))
        }

    setOnClickListener {
        DatePickerDialog(
            context, datePickerOnDataSetListener, myCalendar
                .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
            myCalendar.get(Calendar.DAY_OF_MONTH)
        ).run {
            maxDate?.time?.also { datePicker.maxDate = it }
            show()
        }
    }
}

Verwendungszweck:

In Aktivität:

editText.transformIntoDatePicker(this, "MM/dd/yyyy")
editText.transformIntoDatePicker(this, "MM/dd/yyyy", Date())

In Fragmenten:

editText.transformIntoDatePicker(requireContext(), "MM/dd/yyyy")
editText.transformIntoDatePicker(requireContext(), "MM/dd/yyyy", Date())

914930cookie-checkWie setze ich das maximale Datum im Datepicker-Dialog in Android?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy