【问题标题】:Android From and To Calender not working properlyAndroid From 和 To 日历无法正常工作
【发布时间】:2018-06-01 06:26:41
【问题描述】:

我有两个日历字段,我有两个条件可以申请 1.不允许用户选择过去的日期意味着应用程序只允许用户选择从今天开始的日期 2. 不允许用户选择开始日期之前的TO日期

这是我正在使用的代码

fromcal=Calendar.getInstance();
    tocal=Calendar.getInstance();

    final DatePickerDialog.OnDateSetListener fromdate = new DatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(DatePicker datePicker, int year, int monthOfYear, int dayOfMonth) {

            fromcal.set(Calendar.YEAR,year);
            fromcal.set(Calendar.MONTH,monthOfYear);
            fromcal.set(Calendar.DAY_OF_MONTH, dayOfMonth);
            updateFromDate();

        }
    };

    fromtext.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            new DatePickerDialog(RequestLeaveActivity.this,fromdate,
                    fromcal.get(Calendar.YEAR),fromcal.get(Calendar.MONTH),
                    fromcal.get(Calendar.DAY_OF_MONTH)).show();
        }
    });


    final DatePickerDialog.OnDateSetListener todate = new DatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(DatePicker datePicker, int year, int monthOfYear, int dayOfMonth) {

            tocal.set(Calendar.YEAR,year);
            tocal.set(Calendar.MONTH,monthOfYear);
            tocal.set(Calendar.DAY_OF_MONTH, dayOfMonth);
            updateToDate();

        }
    };

    totext.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            new DatePickerDialog(RequestLeaveActivity.this,todate,
                    tocal.get(Calendar.YEAR),tocal.get(Calendar.MONTH),
                    tocal.get(Calendar.DAY_OF_MONTH)).show();
        }
    });

【问题讨论】:

标签: android android-calendar


【解决方案1】:

禁用过去的日期

datePicker.setMinDate(System.currentTimeMillis() - 1000);

比较起止日期

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date strDate = sdf.parse(valid_until);
if (new Date().after(strDate)) { 
    //print Toast
} 

【讨论】:

    【解决方案2】:

    您可以通过限制用户选择其他日期来实现此目的。我用的是Times Square;自定义日历库。

     private void setupCalenderView() {
        Calendar nextYear = Calendar.getInstance();
        nextYear.add(Calendar.YEAR, 1);
        Date endDate = new DateTime().plusDays(7).toDate();    //End Date
        Date startDate = new Date();   //Start Date;
    
        cv_calender.init(startDate , endDate , Locale.ENGLISH)
                .withSelectedDate(new Date());
    }
    

    对于日期选择,您必须设置此侦听器 - cv_calender.setOnDateSelectedListener(this); 并实现这些方法。

     @Override
    public void onDateSelected(Date date) {
        String selectedDate = new SimpleDateFormat(Your_Date_Format, Locale.ENGLISH).format(date);
    }
    
    @Override
    public void onDateUnselected(Date date) {
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-30
      • 1970-01-01
      • 2022-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多