当前位置: 首页 > 知识库问答 >
问题:

如何在日期选择器对话框中设置日期限制

须旭
2023-03-14

我想把日期的限制,以便用户不能选择更多的日期,例如,如果今天是1月1日,那么用户不应该能够选择超过7个日期,我的意思是他不能选择1月9日。我也希望他不要选择月份和年份。所以我限制他在一周内完成任务。

到目前为止,我所做的是显示日期选择器片段并在其中设置当前日期。我的主活动中的代码如下所示:

etSelectDate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                DialogFragment datePickerFragment = new DatePickerFragment() {
                    @Override
                    public void onDateSet(DatePicker view, int year, int month, int day) {
                        Log.d("Date Change", "onDateSet");
                        Calendar c = Calendar.getInstance();
                        c.set(year, month, day);
                        DateFormat df = DateFormat.getDateInstance();
                        etSelectDate.setText(df.format(c.getTime()));
                        //nextField.requestFocus(); //moves the focus to something else after dialog is closed

                    }
                };
                datePickerFragment.show(MainActivity.this.getSupportFragmentManager(), "datePicker");

            }
        });

日期选择器片段类如下所示:

 public static class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener{

        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            // Use the current date as the default date in the picker
            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);

            // Create a new instance of DatePickerDialog and return it
            return new DatePickerDialog(getActivity(), this, year, month, day);
        }

        @Override
        public void onDateSet(DatePicker view, int year, int month, int day) {
            //blah
        }
    }
pickerDialog.getDatePicker().setMaxDate(new Date().getTime());

它将当前日期设置为最大日期,但我如何添加7天前,因为它是日期对象?请帮忙

共有1个答案

韦宣
2023-03-14

您可以使用setmindate(long)setmaxdate(long)方法。这两种方法都适用于API级别11及以上。由于您使用的是DatePickerDialog,因此首先需要通过调用getDatePicker()方法来获取底层的DatePicker。

dpdialog.getDatePicker().setMinDate(minDate);  
dpdialog.getDatePicker().setmaxDate(maxDate);  

来源:在Android中设置DatePickerDialog的限制?

可以通过使用,

Date today = new Date();
Calendar c = Calendar.getInstance();
c.setTime(today);
c.add( Calendar.MONTH, -6 ) // Subtract 6 months
long minDate = c.getTime().getTime() // Twice!  
return new DatePickerDialog(getActivity(), this, year, month, day);
 // Create a new instance of DatePickerDialog and return it
    DatePickerDialog pickerDialog = new DatePickerDialog(getActivity(), this, year, month, day);
    pickerDialog.getDatePicker().setMaxDate(maxDate);
    pickerDialog.getDatePicker().setMinDate(minDate);
    return pickerDialog;
 类似资料:
  • 问题内容: 我创建了一个活动,其中有一个用于插入用户出生日期的字段。我已经使用日期选择器来实现此目的。 这是我正在做的源代码: 现在,我要做的是将日期选择器限制为特定年份。 像这样: 我应该怎么做才能将上述边界设置为日期选择器? // - - - - - - - - 编辑 - - - - - - - - - - - - - - 我做了这样的事情: 这是固定上限,但下限或minDate尚未固定! 什

  • 我正在尝试实现日期选择器对话框,但该对话框显示只有一个日期,并显示日期的其余部分为空白,这可能是什么原因?

  • 此代码仅在我保存笔记时显示日期,它不允许我为我的活动选择日期

  • 我在活动中使用了一个类来创建日期选择器对话框,它一直在工作,直到我迁移到android studio。以下是课程: 类StartDatePicker现在引发了一个错误:这个片段类应该是公共的。在我将其声明为public之后,它引发了另一个错误:这个片段内部类应该是静态的。我不想将其声明为静态的,因为私有void showDate(int year,int month,int day,int day

  • 我想要一个日期选择器只显示月份和年份。我已经定制了日期选择器来这样做,即,从选择器中移除“Day”字段,但在Android中,Lollipop得到的选择器有Day、Month和year。下面是我的一段代码。请帮我弄清楚问题所在。提前道谢。

  • 我已经记录了用于从日期选择器中选择日期的selenium代码。在运行测试用例时,日期选择器会弹出并正确突出显示所选日期。但是没有选择日期。代码如下所示:- 此异常仅出现在记录的代码中。我使用的是selenium-server-standalone-2 . 45 . 0 jar。