Datepicker y timepicker – establece valores máximos y mínimos en android

Estoy tratando de hacer algo como una aplicación de recordatorio. Quiero permitir al usuario seleccionar la fecha y hora que no es ahora (al menos 5 minutos a partir de ahora), y también quiero deshabilitar al usuario de seleccionar una fecha que está demasiado lejos – 30 días, por ejemplo. Creé datePicker y timePicker, los hizo pop-up en el botón de clic, pero no podía encontrar la forma de establecer los valores mínimo y máximo.

public void showDateDialog() { btnDate = (Button) findViewById(R.id.buttonDate); btnDate.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { showDialog(DATE_DIALOG_ID); } }); } public void showTimeDialog() { btnTime = (Button) findViewById(R.id.buttonTime); btnTime.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { showDialog(TIME_DIALOG_ID); } }); } @Override protected Dialog onCreateDialog(int id) { switch (id) { case DATE_DIALOG_ID: // create a new DatePickerDialog with values you want to show return new DatePickerDialog(this, datePickerListener, yearSet, monthSet, daySet); // create a new TimePickerDialog with values you want to show case TIME_DIALOG_ID: return new TimePickerDialog(this, timePickerListener, hourSet, minuteSet, false); } return null; } private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { yearSet = year; monthSet = monthOfYear + 1; daySet = dayOfMonth; btnDate.setText(new SimpleDateFormat("DD").format(daySet) + "-" + new SimpleDateFormat("MMM").format(monthSet) + "-" + yearSet); } }; private TimePickerDialog.OnTimeSetListener timePickerListener = new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hour, int minute) { hourSet = hour; minuteSet = minute; btnTime.setText(hourSet + ":" + new SimpleDateFormat("MM").format(hourSet)); } }; 

 try this: btnDate.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { } }; Calendar c = Calendar.getInstance(); int mYear = c.get(Calendar.YEAR); int mMonth = c.get(Calendar.MONTH); int mDay = c.get(Calendar.DAY_OF_MONTH); final DatePickerDialog datePickerDialog = new DatePickerDialog( Main23Activity.this, datePickerListener, mYear, mMonth, mDay); DatePicker datePicker = datePickerDialog.getDatePicker(); c.add(Calendar.MONTH, +1); long oneMonthAhead = c.getTimeInMillis(); datePicker.setMaxDate(oneMonthAhead); datePicker.setMinDate(System.currentTimeMillis() - 1000); datePickerDialog.show(); } }); btnTime.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { TimePickerDialog.OnTimeSetListener timePickerListener = new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hour, int minute) { } }; Calendar c = Calendar.getInstance(); final TimePickerDialog timePickerDialog = new TimePickerDialog(Main23Activity.this,timePickerListener, c.get(Calendar.HOUR_OF_DAY),c.get(Calendar.MINUTE)+5,false); timePickerDialog.show(); } }); 

Debe comprobar si el usuario selecciona la fecha de hoy y la hora es menor que la condición de tiempo actual sin embargo.

Para DataOicker Pruebe esto

 public class MainActivity extends Activity { TextView txtDatePicker; Calendar cal,cal1; long maxDate; Date date; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); cal = Calendar.getInstance(); cal1 = Calendar.getInstance(); txtDatePicker = (TextView) findViewById(R.id.txtDatePicker); txtDatePicker.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub DatePickerDialog dialog = new DatePickerDialog(MainActivity.this, new OnDateSetListener() { @Override public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, ""+arg1+"/"+(arg2+1)+"/"+arg3, Toast.LENGTH_SHORT).show(); } }, cal.YEAR, cal.MONTH, cal.DAY_OF_MONTH); dialog.getDatePicker().setMinDate(System.currentTimeMillis()); cal1.add(Calendar.YEAR, 5); dialog.getDatePicker().setMaxDate(cal1.getTimeInMillis()); dialog.show(); } }); } } 

Para TimePicker pruebe este examen

Combiné los selectores de fecha y hora y añadí una condición a timePicker.

  public class TestActivity extends Activity { private Button mPickDate; private TextView mDateDisplay; private TextView mTimeDisplay; final Calendar c = Calendar.getInstance(); private int mYear = c.get(Calendar.YEAR); private int mMonth = c.get(Calendar.MONTH); private int mDay = c.get(Calendar.DAY_OF_MONTH); private int mHour = c.get(Calendar.HOUR_OF_DAY); private int mMinute = c.get(Calendar.MINUTE); static final int TIME_DIALOG_ID = 1; static final int DATE_DIALOG_ID = 0; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test); }); mDateDisplay = (TextView) findViewById(R.id.dateTextView); mPickDate = (Button) findViewById(R.id.datepicker); mTimeDisplay = (TextView) findViewById(R.id.timeTextView); mPickDate.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { showDialog(DATE_DIALOG_ID); } }); }); mPickDate.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { showDialog(DATE_DIALOG_ID); } }); } // Update date and time private void updateDate() { mDateDisplay.setText( new StringBuilder() .append(mDay).append("/") .append(mMonth + 1).append("/") .append(mYear).append(" ")); showDialog(TIME_DIALOG_ID); } public void updateTime() { mTimeDisplay.setText( new StringBuilder() .append(pad(mHour)).append(":") .append(pad(mMinute))); } private static String pad(int c) { if (c >= 10) return String.valueOf(c); else return "0" + String.valueOf(c); } // Generate DatePickerDialog and TimePickerDialog private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() { public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { mYear = year; mMonth = monthOfYear; mDay = dayOfMonth; updateDate(); } }; private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() { public void onTimeSet(TimePicker view, int hourOfDay, int minute) { mHour = hourOfDay; mMinute = minute; Calendar c2 = Calendar.getInstance(); if (mYear == c2.get(Calendar.YEAR) && mMonth == c2.get(Calendar.MONTH) && mDay == c2.get(Calendar.DAY_OF_MONTH) && (mHour < c2.get(Calendar.HOUR_OF_DAY) || (mHour == c2.get(Calendar.HOUR_OF_DAY) && mMinute <= (c2.get(Calendar.MINUTE)+10)) ) ) { Toast.makeText(TestActivity.this, "Set time at least 10 minutes from now", Toast.LENGTH_LONG).show(); } else { updateTime(); } } }; @Override protected Dialog onCreateDialog(int id) { switch (id) { case DATE_DIALOG_ID: DatePickerDialog datePickerDialog = new DatePickerDialog(this, mDateSetListener, mYear, mMonth, mDay); c.add(Calendar.MONTH, +1); long oneMonthAhead = c.getTimeInMillis(); datePickerDialog.getDatePicker().setMaxDate(oneMonthAhead); datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis() - 1000); return datePickerDialog; case TIME_DIALOG_ID: TimePickerDialog timePickerDialog = new TimePickerDialog(this, mTimeSetListener, mHour, mMinute, false); return timePickerDialog; } return null;} } 
  • Cómo establecer un intervalo de minutos personalizado en TimePickerDialog en Android
  • Android: ¿Cambia el separador de tiempo en TimePicker estándar?
  • Convertir la fecha y la hora en milisegundos en Android
  • ¿Cómo se utilizan los skins personalizados de Datepicker y Timepicker?
  • Consiga tiempo usando el selector de tiempo android
  • TimePickerDialog y AM o PM
  • Android TimePickerDialog set max time
  • Timepicker de los desarrolladores de Android no se permite estática
  • ¿Cómo implementar android Minutos-Segundos selector?
  • Cómo cambiar el color de las líneas de TimePicker en el tema Appcompat?
  • ¿Cómo implementar el cordova-plugin-datepicker para Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.