【问题标题】:SetMax date to 30 days in Android Date Picker在 Android 日期选择器中将最大日期设置为 30 天
【发布时间】:2015-11-17 07:43:48
【问题描述】:

我正在为Datepicker 使用材料设计库。我需要设置最小和最大日期。最小日期有效,但我无法获得从最小 date(current date) 起应为 30 天的最大日期。谁能知道如何让它在这里工作?

public void show() {
    Calendar now = Calendar.getInstance();
    DatePickerDialog dpd = DatePickerDialog.newInstance(
            PostInfo.this,
            now.get(Calendar.YEAR),
            now.get(Calendar.MONTH),
            now.get(Calendar.DAY_OF_MONTH)
    );
    dpd.setMinDate(Calendar.getInstance());

    Calendar calendar = Calendar.getInstance(); 
  calendar.add(Calendar.DAY_OF_MONTH, 30);   


    dpd.setMaxDate(calendar.getInstance());


    dpd.show(getFragmentManager(), "Datepickerdialog");

【问题讨论】:

    标签: java android date datepicker android-datepicker


    【解决方案1】:

    您可以使用setMaxDate()

    DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(), this, year, month, day);
    
    Calendar calendar = Calendar.getInstance();  // this is default system date
                    datePickerDialog.getDatePicker().setMinDate(calendar.getTimeInMillis());  //set min date                 // set today's date as min date
                    calendar.add(Calendar.DAY_OF_MONTH, 30); // add date to 30 days later
                    datePickerDialog.getDatePicker().setMaxDate(calendar.getTimeInMillis()); //set max date
    

    【讨论】:

    • 它说无法解析方法 getDatePicker()。我想是因为我在使用材料设计库?
    • @spykeburn 你可以这样做吗? dpd.setMaxDate(),没有getDatePicker()
    • 我试过了。它说 DatePickerDialog 中的 setmaxDate(java.util.calender) 不能应用于 (java.util.date)
    • 同样的事情 - DatePickerDialog 中的 setmaxDate(java.util.calender) 不能应用于(长)...
    • 最后一次尝试,返回dpd.setMaxDate(Calendar.getInstance());
    【解决方案2】:

    所以这终于奏效了。我所要做的就是调用 dpd.setMaxDate(now) 而不是 dpd.setMaxDate(now.getInstance())

    public void show() {
            Calendar now = Calendar.getInstance();
    
            DatePickerDialog dpd = DatePickerDialog.newInstance(
                    PostInfo.this,
                    now.get(Calendar.YEAR),
                    now.get(Calendar.MONTH),
                    now.get(Calendar.DAY_OF_MONTH)
            );
    
            dpd.setMinDate(Calendar.getInstance());
            now.add(Calendar.DAY_OF_MONTH, 30);
    
            dpd.setMaxDate(now);
    
            dpd.show(getFragmentManager(), "Datepickerdialog");
    
     }
    

    【讨论】:

    • setMaxDate(now) 无法通过。因为它预计只有 Long
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-12
    相关资源
    最近更新 更多