2012-02-07 75 views
6

Cómo limitar el DatePicker a no poder elegir la fecha en el futuro. Tengo DatePicker en la actividad que se utiliza para el registro. ¿Qué hacer para que el usuario no pueda elegir la fecha de cumpleaños si el usuario tiene menos de 18 años (por ejemplo, no puede elegir la fecha después de la fecha de hoy: 18 años)?Cómo limitar el usuario en DatePicker para que solo pueda elegir la fecha anterior a today_date - 18 años

+0

convierta la fecha configurada en millis y compruebe con la fecha actual en milis. calcular el intervalo entre dos milis. –

Respuesta

2

No mencionó qué nivel de API. En Honeycomb y más tarde, DatePicker ha establecido los métodos Min/MaxDate que puede usar para restringir el rango permitido.

2

Espero que tenga la respuesta hasta ahora. Lo siguiente también puede ser útil para otros: Si desea deshabilitar al usuario para elegir una fecha de 18 años a partir de hoy, esto es lo que puede hacer.

obtener el tiempo de 1-ENE-1970 a 18 años a partir de ahora (en milisegundos)

Calendar cal = Calendar.getInstance(); 
    cal.set(cal.get(Calendar.YEAR)+18,cal.get(Calendar.MONTH),cal.get(Calendar.DAY_OF_MONTH), 
      cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), 0); 
    long time = cal.getTimeInMillis(); 

conjunto como máximo permitido fecha en planificador de evento

datepicker2.setMaxDate(time); 

Espero que ayuda a cualquier otra persona buscando una respuesta

0

Cuente el año anterior a 18 a partir de ahora (año actual) por int minYear = currentYear - 18; Y luego configure esa fecha con (año mínimo, mes actual, día actual) como el límite máximo del selector de fecha.

private static void setMaxLimitInDatePicker(DatePickerDialog datePickerDialog) { 
    final Calendar calendar = Calendar.getInstance(); 

    int currentYear = calendar.get(Calendar.YEAR); 
    int currentMonth = calendar.get(Calendar.MONTH); 
    int currentDay = calendar.get(Calendar.DAY_OF_MONTH); 

    int minYear = currentYear - 18; 
    int minMonth = currentMonth; 
    int minDay = currentDay; 

    calendar.set(minYear, minMonth, minDay); 
    long minDateInMilliSeconds = calendar.getTimeInMillis(); 

    // Set 18 years from today as max limit of date picker 
    datePickerDialog.getDatePicker().setMaxDate(minDateInMilliSeconds); 
} 
+0

por favor considere explicar su respuesta. Se desaconsejan las respuestas de solo código. – ADyson

Cuestiones relacionadas