with studio google eventos event calendario android datepicker android-datepicker

studio - Cómo deshabilitar las fechas futuras en el selector de fecha de Android



calendario de eventos android studio (5)

Obtenga el DatePicker de DatePickerDialog con getDatePicker() . Establezca la fecha máxima en la fecha actual con setMaxDate() :

mDatePicker.getDatePicker().setMaxDate(System.currentTimeMillis());

Requiere API nivel 11.

Cómo deshabilitar las fechas futuras en el selector de fecha de Android

Código de Java:

mExpireDate.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // To show current date in the datepicker final Calendar mcurrentDate = Calendar.getInstance(); int mYear = mcurrentDate.get(Calendar.YEAR); int mMonth = mcurrentDate.get(Calendar.MONTH); int mDay = mcurrentDate.get(Calendar.DAY_OF_MONTH); DatePickerDialog mDatePicker = new DatePickerDialog( EventRegisterActivity.this, new OnDateSetListener() { public void onDateSet(DatePicker datepicker, int selectedyear, int selectedmonth, int selectedday) { mcurrentDate.set(Calendar.YEAR, selectedyear); mcurrentDate.set(Calendar.MONTH, selectedmonth); mcurrentDate.set(Calendar.DAY_OF_MONTH, selectedday); SimpleDateFormat sdf = new SimpleDateFormat( getResources().getString( R.string.date_card_formate), Locale.US); mExpireDate.setText(sdf.format(mcurrentDate .getTime())); } }, mYear, mMonth, mDay); mDatePicker.setTitle(getResources().getString( R.string.alert_date_select)); mDatePicker.show(); } });

por favor ayuda ¿cómo?


Puede llamar a getDatePicker (). SetMaxDate (long) en su DatePickerDialog para establecer hoy como su fecha máxima. Puede actualizar la función con el mismo nombre del fragmento que publicó.

Nota :: DatePickerDialog es el objeto al que hice referencia en los documentos de Android desde el enlace que publiqué.

@Override protected Dialog onCreateDialog(int id) { Calendar c = Calendar.getInstance(); int cyear = c.get(Calendar.YEAR); int cmonth = c.get(Calendar.MONTH); int cday = c.get(Calendar.DAY_OF_MONTH); switch (id) { case DATE_DIALOG_ID: //start changes... DatePickerDialog dialog = new DatePickerDialog(this, mDateSetListener, cyear, cmonth, cday); dialog.getDatePicker().setMaxDate(System.currentTimeMillis()); return dialog; //end changes... } return null; }

¡Prueba esto y da tu opinión!


Si el usuario selecciona una fecha futura, actualice el datepicker a la fecha actual (hoy)

puede usar el siguiente código para verificar que la fecha seleccionada sea futura o no

final Calendar cal = Calendar.getInstance(); datePickerDob.init(currentYear, currentMonth, currentDay, new OnDateChangedListener() { @Override public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { Calendar selectedCal = Calendar.getInstance(); selectedCal.set(year, monthOfYear, dayOfMonth); long selectedMilli = selectedCal.getTimeInMillis(); Date datePickerDate = new Date(selectedMilli); if (datePickerDate.after(new Date())) { datePickerDob.updateDate(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH)); } else { } } });

También puedes usar el método compareTo ()

datePickerDate.compareTo(new Date());

Compare el receptor con la fecha especificada para determinar el orden relativo.

Los parámetros fechan una fecha para comparar.

Devuelve un int <0 si esta Fecha es menor que la Fecha especificada, 0 si son iguales y un int> 0 si esta Fecha es mayor.


@Override public Dialog onCreateDialog(Bundle savedInstanceState) { DatePickerDialog dialog = new DatePickerDialog(getActivity(), ondateSet, year, month, day); Calendar c = Calendar.getInstance(); c.add(Calendar.DATE, 1); Date newDate = c.getTime(); dialog.getDatePicker().setMaxDate(newDate.getTime() - (newDate.getTime() % (24 * 60 * 60 * 1000))); return dialog; }


**new Way** ed_date.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Calendar mcurrentDate=Calendar.getInstance(); year=mcurrentDate.get(Calendar.YEAR); month=mcurrentDate.get(Calendar.MONTH); day=mcurrentDate.get(Calendar.DAY_OF_MONTH); final DatePickerDialog mDatePicker =new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker datepicker, int selectedyear, int selectedmonth, int selectedday) { ed_date.setText(new StringBuilder().append(year).append("-").append(month+1).append("-").append(day)); int month_k=selectedmonth+1; } },year, month, day); mDatePicker.setTitle("Please select date"); // TODO Hide Future Date Here mDatePicker.getDatePicker().setMaxDate(System.currentTimeMillis()); // TODO Hide Past Date Here // mDatePicker.getDatePicker().setMinDate(System.currentTimeMillis()); mDatePicker.show(); } });