如何在android中的datepicker对话框中设置最大日期?

Yug*_*esh 94 android android-datepicker

在我的应用程序中使用日期选择器来设置date.i想要根据系统日期设置日期选择器最大日期为今天日期.我不知道如何将日期选择器最大日期设置为今天日期.任何人都知道帮助我解决这个问题.

我的日期选择器编码是:

private int pYear;
private int pMonth;
private int pDay;
static final int DATE_DIALOG_ID = 0;

final Calendar c = Calendar.getInstance();
pYear = c.get(Calendar.YEAR);
pMonth = c.get(Calendar.MONTH);
pDay = c.get(Calendar.DAY_OF_MONTH);

// Date picker
public Dialog onCreateDialog(int id) {
    switch (id) {
    case DATE_DIALOG_ID:

        DatePickerDialog.OnDateSetListener pDateSetListener = new DatePickerDialog.OnDateSetListener() {

            public void onDateSet(DatePicker view, int year,
                    int monthOfYear, int dayOfMonth) {

                pYear = year;
                pMonth = monthOfYear;
                pDay = dayOfMonth;

                e_dob.setText(new StringBuilder()
                        // to set date in editext
                        .append(pDay).append("/").append(pMonth + 1)
                        .append("/").append(pYear).append(" "));
            }
        };
        return new DatePickerDialog(this, pDateSetListener, pYear, pMonth,
                pDay);

    }
    return null;
}
Run Code Online (Sandbox Code Playgroud)

ozb*_*bek 285

使用setMaxDate().

例如,用以下内容替换return new DatePickerDialog(this, pDateSetListener, pYear, pMonth, pDay)语句:

    DatePickerDialog dialog = new DatePickerDialog(this, pDateSetListener, pYear, pMonth, pDay);
    dialog.getDatePicker().setMaxDate(new Date().getTime());
    return dialog;
Run Code Online (Sandbox Code Playgroud)

  • 您的答案也应该得到赞扬;),您应该显示出简短的方法! (2认同)

uga*_*oft 27

获取今天的日期(和时间)并将其作为最长日期应用.

Calendar c = Calendar.getInstance();
c.set(2017, 0, 1);//Year,Mounth -1,Day
your_date_picker.setMaxDate(c.getTimeInMillis());
Run Code Online (Sandbox Code Playgroud)

我们也可以这样做(查看System.currentTimeMillis()和Calendar方法的Stackoverflow答案)

long now = System.currentTimeMillis() - 1000;
dp_time.setMinDate(now);
dp_time.setMaxDate(now+(1000*60*60*24*7)); //After 7 Days from Now
Run Code Online (Sandbox Code Playgroud)

  • 这是设置任何最大日期的完美和实际答案 (2认同)

Yoa*_*uet 10

您可以尝试替换此行:

return new DatePickerDialog(this, pDateSetListener, pYear, pMonth, pDay);
Run Code Online (Sandbox Code Playgroud)

由那些:

DatePickerDialog dpDialog = new DatePickerDialog(this, pDateSetListener, pYear, pMonth, pDay);
DatePicker datePicker = dpDialog.getDatePicker();

Calendar calendar = Calendar.getInstance();//get the current day
datePicker.setMaxDate(calendar.getTimeInMillis());//set the current day as the max date
return dpDialog;
Run Code Online (Sandbox Code Playgroud)


Sun*_*nil 9

尝试这个

我尝试了太多的解决方案,但都没有奏效,浪费了半天时间终于找到了解决方案。

这段代码简单地向您展示了一个 DatePickerDialog,其中包含最小和最大日期、月份和年份,无论您想要什么都可以修改它。

final Calendar calendar = Calendar.getInstance();
                DatePickerDialog dialog = new DatePickerDialog(getActivity(), new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(DatePicker arg0, int year, int month, int day_of_month) {
                        calendar.set(Calendar.YEAR, year);
                        calendar.set(Calendar.MONTH, (month+1));
                        calendar.set(Calendar.DAY_OF_MONTH, day_of_month);
                        String myFormat = "dd/MM/yyyy";
                        SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.getDefault());
                        your_edittext.setText(sdf.format(calendar.getTime()));
                    }
                },calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
                dialog.getDatePicker().setMinDate(calendar.getTimeInMillis());// TODO: used to hide previous date,month and year
                calendar.add(Calendar.YEAR, 0);
                dialog.getDatePicker().setMaxDate(calendar.getTimeInMillis());// TODO: used to hide future date,month and year
                dialog.show();
Run Code Online (Sandbox Code Playgroud)

输出:- 禁用以前和未来的日历

在此处输入图片说明