如何将最小DatePicker日期设置为当前日期

gsi*_*011 56 android android-datepicker

我想将用户可以在DatePicker中选择的最小日期设置为当前日期.我试过这个:

DatePicker datePicker = (DatePicker) findViewById(R.id.event_date);
datePicker.setMinDate(System.currentTimeMillis());
Run Code Online (Sandbox Code Playgroud)

这给了我以下例外:

12-01 12:23:31.226: E/AndroidRuntime(10311): Caused by: java.lang.IllegalArgumentException: fromDate: Sat Dec 01 12:23:31 EST 2012 does not precede toDate: Sat Dec 01 12:23:31 EST 2012
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

Sam*_*Sam 154

错误表示您无法将最小日期设置为完全正确.尝试减去第二个:

datePicker.setMinDate(System.currentTimeMillis() - 1000);
Run Code Online (Sandbox Code Playgroud)

从源代码开始,最小日期必须在当前日期之前,而不是等于当前日期:

if (date.before(mMinDate)) {
    throw new IllegalArgumentException("fromDate: " + mMinDate.getTime()
            + " does not precede toDate: " + date.getTime());
}
Run Code Online (Sandbox Code Playgroud)

所以你只需要从now(System.currentTimeMillis())传递中减去足够的时间date.before(mMinDate).


小智 14

如果您不想使用自定义对话框.使用此单行代码:

datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis()); 
Run Code Online (Sandbox Code Playgroud)


Sat*_*jit 8

这对我来说非常有效。简单又好。

DatePickerDialog dialog = new DatePickerDialog(this, this,
              Calendar.YEAR,Calendar.MONTH,
                Calendar.DAY_OF_MONTH);

        dialog.getDatePicker().setMinDate(Calendar.getInstance().getTimeInMillis());
        dialog.show();
Run Code Online (Sandbox Code Playgroud)


Sai*_*lam 7

检查Android DatePickerDialog设置的最小最大日期代码.

这是一个例子.

final Calendar c = Calendar.getInstance();  
    int year = c.get(Calendar.YEAR);  
    int month = c.get(Calendar.MONTH);  
    int day = c.get(Calendar.DAY_OF_MONTH);  
DatePickerDialog dpd = new DatePickerDialog(getActivity(),AlertDialog.THEME_TRADITIONAL,this,year, month, day);  

    //Get the DatePicker instance from DatePickerDialog  
    DatePicker dp = dpd.getDatePicker();  
    //Set the DatePicker minimum date selection to current date  
    dp.setMinDate(c.getTimeInMillis());//get the current day  
    //dp.setMinDate(System.currentTimeMillis() - 1000);// Alternate way to get the current day  

    //Add 6 days with current date  
    c.add(Calendar.DAY_OF_MONTH,6);  

    //Set the maximum date to select from DatePickerDialog  
    dp.setMaxDate(c.getTimeInMillis());  
    //Now DatePickerDialog have 7 days range to get selection any one from those dates 
Run Code Online (Sandbox Code Playgroud)