0

我在我的应用程序中使用日期选择器对话框。当用户从对话框中选择任何日期时,我不想选择传递的日期。我的代码在这里。

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();
    }
};

更新日期将所选日期设置为 EditText。是否有任何图书馆方法可以防止选择过去的日期?

提前致谢

4

4 回答 4

2

在更新方法中,您的条件将是 .Date 类具有之前、等于和之后的方法。使用它们。

if(userdate.before(today) || userdate.equals(today)){
   //past date found
}
于 2013-06-17T07:19:02.453 回答
1

您可以使用:getDatePicker().setMaxDate(). 覆盖onCreate()对话框并在那里应用限制。

于 2013-06-17T07:21:26.747 回答
1

如果使用 API 11 或更高版本,您可以使用DatePicker.setMinDate()

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

另请参阅setMinDate() 以了解 DatePicker 不起作用以了解如何使用它。

于 2013-06-17T07:22:08.860 回答
0

如果您的应用程序需要在API LEVEL 8+上运行,请使用以下方式来执行此操作。将相关代码放在 youtonDateSet方法中。

@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();

            }
       }

如果您的应用程序需要在API LEVEL 11+上运行,那么使用您可以在此处DatePicker.setMinDate(long)找到更多信息

于 2013-06-17T07:32:27.577 回答