2016-11-23 79 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(); 
} 
相关问题