android - 如何在Android中的DatePicker中仅阻止过去的日期

标签 android datepicker

如何在 Android 的 DatePicker 中仅阻止过去的日期? 我正在使用过去日期和当前日期被阻止的示例代码, 我只需要阻止过去的日期而不是当前日期,这是我的代码

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

            public void onDateSet(DatePicker view, int yearSelected,
                                  int monthOfYear, int dayOfMonth) {
               year = yearSelected;
               month = monthOfYear;
               day = dayOfMonth;
               int n_mon = monthOfYear+1;


               business_date_et.setText(day+"-"+n_mon+"-"+year);
            }
        };


        private TimePickerDialog.OnTimeSetListener mTimeSetListener =
            new TimePickerDialog.OnTimeSetListener() {

                public void onTimeSet(TimePicker view, int hourOfDay, int min) {
                    hour = hourOfDay;
                    minute = min;

                    business_time_et.setText(hour+":"+minute);
                  }
            };


            protected Dialog onCreateDialog(int id) {
                switch (id) {
                case DATE_DIALOG_ID:

                    DatePickerDialog da = new DatePickerDialog(this, mDateSetListener,
                            mYear, mMonth, mDay);
                    Calendar c = Calendar.getInstance();

                    c.add(Calendar.DATE, 1);
                    Date newDate = c.getTime();
                    da.getDatePicker().setMinDate(newDate.getTime());
                    return da;

                case TIME_DIALOG_ID:
                    return new TimePickerDialog(this,
                            mTimeSetListener, mHour, mMinute, false);

                }
                return null;
            }

最佳答案

这里是一个示例代码:

DatePicker datePicker = (DatePicker) getView().findViewById(R.id.your_datepicker_id);   

final Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, c.getMinimum(Calendar.HOUR_OF_DAY));
c.set(Calendar.MINUTE, c.getMinimum(Calendar.MINUTE));
c.set(Calendar.SECOND, c.getMinimum(Calendar.SECOND));
c.set(Calendar.MILLISECOND, c.getMinimum(Calendar.MILLISECOND));

Time now = new Time();
now.setToNow();

datePicker.updateDate(now.year, now.month, now.monthDay);
datePicker.setMinDate(c.getTimeInMillis());

请注意,您必须将 MinDate 值设置为当天的最小时间,而不仅仅是比当前时间晚 1 或 2 秒的时间。这解决了 Android 中 Datepicker 的一个众所周知的问题。

关于android - 如何在Android中的DatePicker中仅阻止过去的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26857310/

相关文章:

Java、Android 字体质量似乎很低

javascript - 如何将字符串日期转换为时刻?

java - Google Fit Api 过滤手动添加的 Activity

java - 使用连接多个 View 的单个手势检测器获得双击/触摸 View

java - 2014 年 BroadcastReceiver 的 Google Play/Google Analytics INSTALL_REFERRER

android - 无法执行 dex : Multiple dex files define Lcom/google/android/gcm/GCMBaseIntentService;

java - 使用“今天”按钮更新 Android DatePickerDialog 中的日期而不关闭对话框

datepicker - Swift:使用 UIDatePicker 作为 UITextField inputView 不更新

javascript - 在 jQuery Datepicker 上使用 onSelect 后,日历将不会显示

jquery - 两个日期选择器未显示在单个 html 页面中