2016-11-23 12 views
0

Erstellen App, in der ich DatePicker.Now ich möchte MinDate von DatePicker ist letzten zwei Jahren und maximal Datum Zukunft zwei Jahre only.Selection sollte Basis auf dem aktuellen Datum sein.Stellen Sie aktuelle Datum ist 23/11/2016 so datepicker sollte Datum bis 23/11/2014 in DatePicker zeigen das ganze Datum sollte vor dem 23/11/2014 deaktiviert sein.Und wenn wir auf Datepicker klicken, sollte der Cursor auf dem aktuellen Datum stehen.Created DtaePickerSet MinDate und MaxDate in DatePIcker

private void showDateDailog() { 

    final DatePickerDialog datePickerDialog = new DatePickerDialog(mContext, new DatePickerDialog.OnDateSetListener() { 

     @Override 
     public void onDateSet(DatePicker datePicker, int selectedYear, int selectedMonth, int selectedDate) { 

      year = selectedYear; 
      month = selectedMonth; 
      day = selectedDate; 

      ((TextView) findViewById(R.id.textViewTORStartDate)).setText(new StringBuilder().append(day).append("/") 
         .append(month + 1).append("/").append(year)); 

     } 
    }, year, month, day); 
    datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis()); 
    datePickerDialog.show(); 
} 

Antwort

5

Um das min Datum zwei Jahre festgelegt vor und max 2 Jahre nach dem heutigen Tag den folgenden Code:

Calendar c = Calendar.getInstance(); 
c.add(Calendar.YEAR, -2); // subtract 2 years from now 
datePickerDialog.getDatePicker().setMinDate(c.getTimeInMillis()); 
c.add(Calendar.YEAR, 4); // add 4 years to min date to have 2 years after now 
datePickerDialog.getDatePicker().setMaxDate(c.getTimeInMillis()); 
+0

es funktioniert.Thanku ... – user7108398

+0

@ user7108398, Willkommen! – RustamG

0

Sie können bekommen die darunter liegende Datepicker von einem DatePickerDialog (einfach durch Aufruf getDatePicker()) und seine Grenzen mit:

setMinDate(long minDate) 
setMaxDate(long maxDate) 

Dabei ist das Argument die übliche Anzahl von Millisekunden seit dem 1. Januar 1970 00:00:00 in der Standardzeitzone. Sie müssen diese Werte natürlich noch berechnen, aber das sollte mit der Calendar-Klasse trivial sein: Übergeben Sie einfach das aktuelle Datum und fügen Sie x Jahre hinzu oder subtrahieren Sie davon

+0

Was Daten vor dem 1. Januar 1970 00.00.00? –

1

Sie können MinDate und MaxDate für das festlegen Sie müssen DatePicker Klasse verwenden.

class MDatePickerDialog extends DatePickerDialog { 
    MDatePickerDialog(Context c) { 
     super(c, null, 2016, 11, 23); 
     Date min = new Date(2018-1900, 4, 21); 
     DatePicker p = getDatePicker(); 
     CalendarView cv = p.getCalendarView(); 
     long cur = cv.getDate(); 
     int d = cv.getFirstDayOfWeek(); 
     p.setMinDate(min.getTime()); 
     cv.setDate(cur + 1000L*60*60*24*40); 
     cv.setFirstDayOfWeek((d + 1) % 7); 
     cv.setDate(cur); 
     cv.setFirstDayOfWeek(d); 
    } 
} 

Ich hoffe, dies wird Ihnen helfen.

2

Ich glaube, dieser Code wirklich hilft Ihnen, das Update zu geben. Hier

ist der Code für Ihr fix -

private void showDateDailog() { 

final DatePickerDialog datePickerDialog = new DatePickerDialog(mContext, new DatePickerDialog.OnDateSetListener() { 

    @Override 
    public void onDateSet(DatePicker datePicker, int selectedYear, int selectedMonth, int selectedDate) { 

     year = selectedYear; 
     month = selectedMonth; 
     day = selectedDate; 

     ((TextView) findViewById(R.id.textViewTORStartDate)).setText(new StringBuilder().append(day).append("/") 
        .append(month + 1).append("/").append(year)); 

    } 
}, year, month, day); 

final Calendar calendar = Calendar.getInstance(); 
Calendar cal = Calendar.getInstance(); 
int yy = calendar.get(Calendar.YEAR); 
int mm = calendar.get(Calendar.MONTH); 
int dd = calendar.get(Calendar.DAY_OF_MONTH); 
//Min date setting part 
cal.set(Calendar.MONTH, mm); 
cal.set(Calendar.DAY_OF_MONTH, dd); 
cal.set(Calendar.YEAR, yy - 2); 
datePickerDialog.setMinDate(cal.getTimeInMillis()); 
//Maximum date setting part 
Calendar calen = Calendar.getInstance(); 
calen.set(Calendar.MONTH, mm); 
calen.set(Calendar.DAY_OF_MONTH, dd); 
calen.set(Calendar.YEAR, yy + 2); 
datePickerDialog.setMaxDate(calen.getTimeInMillis()); 
datePickerDialog.show(); 
} 
Verwandte Themen