簡體   English   中英

日期選擇器對話框不能選擇過去的日期

[英]Datepicker dialog must not select past date

我在應用程序中使用日期選擇器對話框。 當用戶從對話框中選擇任何日期時,我不想選擇經過的日期。 我的代碼在這里。

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。 是否有任何圖書館方法可以防止選擇過去的日期?

提前致謝

在update方法中,您的條件將是。Date類具有before,equals和after方法。請使用它們。

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

您可以使用: getDatePicker().setMaxDate() 重寫Dialog的onCreate()並在其中應用限制。

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

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

另請參閱DatePicker的setMinDate()無法查看如何使用它。

如果您的應用程序需要在API LEVEL 8+以上版本上運行,請使用以下方法進行操作。 將相關的代碼放在您的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();

            }
       }

如果您的應用程序需要在API LEVEL 11+以上版本上運行,則使用DatePicker.setMinDate(long)您可以在此處找到更多信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM