简体   繁体   English

日期选择器对话框不能选择过去的日期

[英]Datepicker dialog must not select past date

I am using datepicker dialog in my app. 我在应用程序中使用日期选择器对话框。 I dont want to select passed dates when user selects any date from Dialog. 当用户从对话框中选择任何日期时,我不想选择经过的日期。 My code is here. 我的代码在这里。

private DatePickerDialog.OnDateSetListener mdateSetListener = new DatePickerDialog.OnDateSetListener() {

    @Override
    public void onDateSet(DatePicker view, int yr, int monthOfYear,
            int dayOfMonth) {
        year = yr;
        month = monthOfYear;
        day = dayOfMonth;
        updateDate();
    }
};

Update date sets the selected date to EditText. 更新日期将所选日期设置为EditText。 Is there any library method to prevent selecting past dates? 是否有任何图书馆方法可以防止选择过去的日期?

Thanks in Advance 提前致谢

In update method your condition would be .Date class have before ,equals and after methods.Use them. 在update方法中,您的条件将是。Date类具有before,equals和after方法。请使用它们。

if(userdate.before(today) || userdate.equals(today)){
   //past date found
}

You can use: getDatePicker().setMaxDate() . 您可以使用: getDatePicker().setMaxDate() Override onCreate() of Dialog and apply limits there. 重写Dialog的onCreate()并在其中应用限制。

If using API 11 or greater, you can use DatePicker.setMinDate() 如果使用API​​ 11或更高版本,则可以使用DatePicker.setMinDate()

Check http://developer.android.com/reference/android/widget/DatePicker.html#setMinDate(long) for more info. 查看http://developer.android.com/reference/android/widget/DatePicker.html#setMinDate(long)了解更多信息。

Also see setMinDate() for DatePicker doesn't work to see how to use it. 另请参阅DatePicker的setMinDate()无法查看如何使用它。

if your application requires to run on API LEVEL 8+ then use below way to do it. 如果您的应用程序需要在API LEVEL 8+以上版本上运行,请使用以下方法进行操作。 put the relevant code inside yout onDateSet method. 将相关的代码放在您的onDateSet方法中。

@Override
    public void onDateSet(DatePicker view, int year, int monthOfYear,
            int dayOfMonth) {
String selected_date = dayOf + "-" + monthOf + "-" + year;

            Log.i(TAG, "Selected Date" + selected_date);
            SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
            Date strDate = null;
            try {
                strDate = sdf.parse(selected_date);
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            Calendar c = Calendar.getInstance();
            System.out.println("Current time => " + c.getTime());

            Date current_date = null;
            String formattedDate = sdf.format(c.getTime());
            try {
                current_date = sdf.parse(formattedDate);
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }


            if (current_date.after(strDate)) {
                Toast.makeText(getApplicationContext(),
                        "Please choose future date", 1).show();
            } else {

                mYear = String.valueOf(year);
                mMonth = String.valueOf(monthOfYear);
                mDay = String.valueOf(dayOfMonth);
                updateStartDate();

            }
       }

if your Application require to run on API LEVEL 11+ then use DatePicker.setMinDate(long) you can find more information HERE 如果您的应用程序需要在API LEVEL 11+以上版本上运行,则使用DatePicker.setMinDate(long)您可以在此处找到更多信息

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM