59

ユーザーが DatePicker で選択できる最小日付を現在の日付に設定したいと考えています。私はこれを試しました:

DatePicker datePicker = (DatePicker) findViewById(R.id.event_date);
datePicker.setMinDate(System.currentTimeMillis());

それは私に次の例外を与えます:

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

どうすればいいですか?

4

10 に答える 10

171

エラーは、最小日付を正確に今に設定できないことを示しています。秒を引いてみてください:

datePicker.setMinDate(System.currentTimeMillis() - 1000);

ソースコードから、最小日付は現在の日付より前でなければならず、現在の日付と同じではありません:

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

System.currentTimeMillis()したがって、 now( ) passから十分な時間を差し引く必要がありますdate.before(mMinDate)

于 2012-12-01T17:41:52.977 に答える
16

カスタム ダイアログを使用したくない場合。次の 1 行のコードを使用します。

datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis()); 
于 2016-07-02T10:01:06.850 に答える
8

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 
于 2015-05-09T07:28:57.550 に答える
0

これを試して

datePicker.setMinDate(new GregorianCalendar.getTimeInMillis());
于 2012-12-01T17:41:11.300 に答える
0

これはあなたを助けることができます。

Calendar cal=Calendar.getInstance();

int year=cal.get(Calendar.YEAR);
int month=cal.get(Calendar.MONTH);
int day=cal.get(Calendar.DAY_OF_MONTH);
int hour=cal.get(Calendar.HOUR_OF_DAY);
int min=cal.get(Calendar.MINUTE);

datePicker.updateDate(year, month, day);

timePicker.setCurrentHour(hour);
timePicker.setCurrentMinute(min);
于 2012-12-01T17:31:13.813 に答える