【问题标题】:How to set minimum date for "ToDate" on datepicker as per the "FromDate" i chosed on another datepicker如何根据我在另一个日期选择器上选择的“FromDate”在日期选择器上设置“ToDate”的最小日期
【发布时间】:2019-04-20 04:49:46
【问题描述】:

简而言之,我有两个日期选择器(从、到)。我选择“FromDate”和“ToDate”直到当前日期。

如果我选择 2019-04-04 到“FromDate”,当我选择“ToDate”时,它应该隐藏“FromDate”之前的日期。我怎样才能做到这一点?

mFromEditTextBox.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        DatePickerDialog fromPicker = new DatePickerDialog(getActivity(), date, myCalendar
                .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
                myCalendar.get(Calendar.DAY_OF_MONTH));

        fromPicker.getDatePicker().setMaxDate(System.currentTimeMillis() - 1000);
        fromPicker.show();

        clickedView = (EditText) v;
    }
});

mToEditTextBox.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {

        DatePickerDialog toPicker = new DatePickerDialog(getActivity(), date, myCalendar
                .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
                myCalendar.get(Calendar.DAY_OF_MONTH));
        toPicker.getDatePicker().setMaxDate(System.currentTimeMillis()-1000);
        toPicker.show();
        clickedView = (EditText) v;
    }
});

【问题讨论】:

    标签: java android android-datepicker


    【解决方案1】:

    您需要为 toDate 选择器设置一个最短日期

    mToEditTextBox.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
    
            DatePickerDialog toPicker = new DatePickerDialog(getActivity(), date, myCalendar
                    .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
                    myCalendar.get(Calendar.DAY_OF_MONTH));
    
            //set min date
            Date fromDate = parseFromDate();
            if (fromDate != null){
                toPicker.getDatePicker().setMinDate(fromDate.getTime());
            }
    
            toPicker.getDatePicker().setMaxDate(System.currentTimeMillis()-1000);
            toPicker.show();
            clickedView = (EditText) v;
        }
    });
    
    // returns date selected in mFromEditTextBox
    private Date parseFromDate(){
        try{
            SimpleDateFormat f = new SimpleDateFormat("date format you used");
            return f.parse(mFromEditTextBox.getText().toString());
        } catch (Exception ex) {
            // from date is not selected
            // alert user to select from date
            return null;
        }
    }
    

    DatePicker

    希望这会有所帮助!

    【讨论】:

    • 我得到“无法解析符号解析日期”返回 f.parseDate(mFromEditTextBox.getText().toString());我尝试将其作为解析,但它没有按要求工作
    • 我在“ToDate”日期选择器中选择了“FromDate”,但之前的日期没有被禁用
    • @Abhishek 实际上不是 parseDate,只是解析。我会更新答案
    • 请参考我上面的其他评论
    • 您确定 parseFromDate 返回日期吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多