2016-11-23 180 views
0

創建應用程序,我在其中顯示DatePicker.Now我想設置MinDate的DatePicker是前兩年和最大日期未來兩年only.Selection應該基於當前日期。假設當前日期是23/11/2016所以datepicker應該顯示日期至2014年11月23日DatePicker所有日期應該禁用之前23/11/2014.And當我們點擊Datepicker光標應該在當前日期。創建DtaePicker在DatePIcker中設置MinDate和MaxDate

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(); 
} 

回答

5

要設定分鐘日期之前兩年後的今天最多約2年使用下面的代碼:

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

它的工作.Thanku ... – user7108398

+0

@ user7108398,歡迎! – RustamG

0

你可以得到從DatePickerDialog底層的DatePicker(通過簡單地調用getDatePicker()),並使用設置它的界限:

setMinDate(long minDate) 
setMaxDate(long maxDate) 

其中參數是自默認時區1970年1月1日00:00:00以來的通常毫秒數。當然,您仍然必須計算這些值,但對於Calendar類來說,這應該是微不足道的:只需傳遞當前日期並從中減去x年即可。

+0

怎麼樣日期1970年00:00:00 1月1日前? –

1

您可以爲此設置MinDate和MaxDate你將需要使用DatePicker類。

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); 
    } 
} 

希望這會對你有所幫助。

2

我相信這段代碼確實能幫助你得到修復。

這是給你修復代碼 -

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(); 
} 
相關問題