【问题标题】:MaterialDateTimePicker MinDate , MaxDate issueMaterialDateTimePicker MinDate , MaxDate 问题
【发布时间】:2017-05-16 11:28:53
【问题描述】:

MaterialDateTimePicker 库用作 Android 应用程序中的日期时间选择器。需要禁用以前和将来的日期以在日历中仅显示 3 天,即。昨天、今天和明天。一切正常,除了选择的日期是 1 个月前。例如,在选择今天(16-05-2017)时,它会获取一个月前的日期(15-04-2017)。 它显示 1 个月的回溯日期而不是 1 天回溯。 代码:

calendar = Calendar.getInstance();

        Year = calendar.get(Calendar.YEAR) ;
        Month = calendar.get(Calendar.MONTH);
        Day = calendar.get(Calendar.DAY_OF_MONTH);

        final Calendar maxDate = Calendar.getInstance();
        maxDate.set(Calendar.DAY_OF_MONTH, maxDate.get(Calendar.DAY_OF_MONTH) + 1);
        maxDate.set(Calendar.MONTH, Month);
        maxDate.set(Calendar.YEAR, Year);

        final Calendar minDate = Calendar.getInstance();
        minDate.set(Calendar.DAY_OF_MONTH, Day - 1);
        minDate.set(Calendar.MONTH, Month);
        minDate.set(Calendar.YEAR, Year);


        mDojBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                datePickerDialog = DatePickerDialog.newInstance(TrainStatus.this, Year, Month, Day);
                datePickerDialog.setThemeDark(false);
                datePickerDialog.showYearPickerFirst(false);
                datePickerDialog.setAccentColor(Color.parseColor("#009688"));
                datePickerDialog.setTitle("Select Date");
                datePickerDialog.setMinDate(minDate);
                datePickerDialog.setMaxDate(maxDate);

                datePickerDialog.show(getFragmentManager(), "DatePickerDialog");

            }
        });

@Override
    public void onDateSet(DatePickerDialog view, int Year, int Month, int Day) {
        dateSelected = String.valueOf(Year)+String.valueOf(Month)+String.valueOf(Day);

    }

任何帮助表示赞赏。在此先感谢。

【问题讨论】:

    标签: android datepicker material-design


    【解决方案1】:
     You should add month +1. because here month starts from zero(0).
    
    dateSelected = String.valueOf(Year)+String.valueOf(Month +1)+String.valueOf(Day);
    
    
    Or
    
       final Calendar calendar = Calendar.getInstance();
                int yy = calendar.get(Calendar.YEAR);
                int mm = calendar.get(Calendar.MONTH);
                int dd = calendar.get(Calendar.DAY_OF_MONTH);
    
                dialog = DatePickerDialog.newInstance(new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(DatePickerDialog view, int year, int monthOfYear, int dayOfMonth) {
                        month = monthOfYear;
                        day = dayOfMonth;
                        TextView tv = (TextView) v1.findViewById(R.id.txtDate);
                        tv.setText(new StringBuilder().append(day).append("-")
                                .append((month + 1)).append("-").append(year));
                    }
                }, yy, mm, dd);
    
                dialog.setMinDate(calendar);
    

    【讨论】:

    • 感谢您的快速回答,这真是我犯的愚蠢错误。
    【解决方案2】:
    https://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html
    

    查看日历类的官方文档,月份从 0 开始。这意味着 0= 1 月,11=12 月。

    【讨论】:

      猜你喜欢
      • 2017-06-12
      • 1970-01-01
      • 2015-02-11
      • 1970-01-01
      • 2014-07-03
      • 2011-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多