validar seleccionar rango permitir pasados pasadas los fechas fecha días dias cómo calendario bootstrap bloquear anteriores android android-datepicker

android - rango - Cómo ocultar fechas pasadas y restringir al usuario para seleccionar solo fechas futuras



datepicker bloquear fechas anteriores jquery (5)

¿Cómo ocultar fechas pasadas en el diálogo de DatePicker? No quiero permitir que el usuario seleccione fechas pasadas

Cúal seria la mejor manera ? Si quiero restringir al usuario para seleccionar fechas futuras solamente!

@Override public void onCreate(Bundle savedInstanceState) { ................................................. editDate.setOnClickListener(new View.OnClickListener() { @SuppressWarnings("deprecation") @Override public void onClick(View v) { // TODO Auto-generated method stub showDialog(DIALOG_DATE); } }); } @Override protected Dialog onCreateDialog(int id) { switch (id) { case DIALOG_DATE: return new DatePickerDialog(this, new OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { dateTime.set(year, monthOfYear, dayOfMonth); editDate.setText(dateFormatter .format(dateTime.getTime())); } }, dateTime.get(Calendar.YEAR), dateTime.get(Calendar.MONTH), dateTime.get(Calendar.DAY_OF_MONTH)); } return null; } }


Puedes probar este código en tu caja de conmutación.

DatePickerDialog dpd = new DatePickerDialog(AddTaskActivity.this, myDateListener, year, month, day); dpd.getDatePicker().setCalendarViewShown(false); dpd.show();

Donde myDateListener está siguiendo el código

privado DatePickerDialog.OnDateSetListener myDateListener = new DatePickerDialog.OnDateSetListener () {

@Override public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) { showDate(arg1, arg2 + 1, arg3); } };

y showDate () es el método para mostrar la fecha en textView Aquí está el código para showDate ()

public void showDate(int year, int month, int day) { String day1 = String.valueOf(day); String month1 = String.valueOf(month); String s2 = day1 + "/" + month1 + "/" + year; Log.e("date", s2); Cal.setText(s2); }

Espero que te ayude :)


Puedes resolverlo con una línea de código:

datePicker.setMinDate(Calendar.getInstance().getTimeInMillis());

De esta manera, el Selector de fecha mostrará solo las fechas a partir de la hora actual y adelante.

setMinDate .


Puedes usar setMinDate (long minDate) para lograr tu objetivo. Doc dice:

Sets the minimal date supported by this NumberPicker in milliseconds since January 1, 1970 00:00:00 in getDefault() time zone.


setMinDate usar setMinDate para la fecha mínima y también puede usar setMaxDate si desea establecer la fecha máxima.

Aquí está el código de ejemplo para SetMinDate para DatePickerDialog .

@Override protected Dialog onCreateDialog(int id) { switch (id) { case DIALOG_DATE: DatePickerDialog mDatePickerDialog = new DatePickerDialog(this, new OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { dateTime.set(year, monthOfYear, dayOfMonth); editDate.setText(dateFormatter.format(dateTime.getTime())); } }, dateTime.get(Calendar.YEAR), dateTime.get(Calendar.MONTH), dateTime.get(Calendar.DAY_OF_MONTH)); Calendar mCalendarMinimum = Calendar.getInstance(); mCalendarMinimum.add(Calendar.HOUR, -1); mDatePickerDialog.getDatePicker().setMinDate(mCalendarMinimum.getTimeInMillis()); return mDatePickerDialog; } return null; }


this.calendar = new GregorianCalendar(); this.datePicker = (DatePicker) findViewById(R.id.xxxxx); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { // (picker is a DatePicker) this.datePicker.setMinDate(this.calendar.getTimeInMillis()); } else { final int minYear = this.calendar.get(Calendar.YEAR); final int minMonth = this.calendar.get(Calendar.MONTH); final int minDay = this.calendar.get(Calendar.DAY_OF_MONTH); this.datePicker.init(minYear, minMonth, minDay, new OnDateChangedListener() { public void onDateChanged(DatePicker view, int year, int month, int day) { Calendar newDate = Calendar.getInstance(); newDate.set(year, month, day); if (calendar.after(newDate)) { view.init(minYear, minMonth, minDay, this); } } }); Log.w(TAG, "API Level < 11 so not restricting date range..."); }

Espero que te ayude :)