如何在日期选择器对话框中将当前日期设置为最小日期



我有一个用于创建客户的活动,在此活动中,我有一个编辑文本,可以在用户打开屏幕时显示当前日期。 它可以更改为将来的日期,但不能更改为过去的日期,所以我使用了

d2.getDatePicker().setMinDate(System.currentTimeMillis() - 1000);

将当前日期设置为最小日期,onClick我有打开DatePickerDialog.但是,当单击该编辑文本应用程序时,应用程序崩溃并且此错误显示在Logcat中。

java.lang.IllegalArgumentException: from日期: 星期三 8 月 22 日 16:31:24 GMT+05:30 2018 不早于日期:8 月 22 日星期三 00:00:00 GMT+05:30 2018

这是我的编辑文本onClickListner代码。

Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat(DateUtil.dateFormatForDOB);
try {
cal.setTime(sdf.parse(edt.getText().toString()));
} catch (ParseException e) {
e.printStackTrace();
}
DatePickerDialog d2 = new DatePickerDialog(CreateUpdateOpportunityActivity.this, android.R.style.Theme_Holo_Light_Dialog_NoActionBar_MinWidth,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int years,
int monthOfYear, int dayOfMonth) {
year = years;
month = monthOfYear;
day = dayOfMonth;
tv.setText(DateUtil.getDateOfBirth(year + "-" + (month + 1) + "-" + day));
}
}, year, month, day);
d2.getDatePicker().setSpinnersShown(true);
d2.getDatePicker().setCalendarViewShown(false);
d2.updateDate(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH));
d2.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
d2.getDatePicker().setMinDate(System.currentTimeMillis() - 1000);
d2.show();
d2.setCanceledOnTouchOutside(false);

我使用了其他解决方案,例如

d2.getDatePicker().setMinDate(System.currentTimeMillis());

d2.getDatePicker().setMinDate(new Date().getTime() - 10000);

但仍然应用程序崩溃和同样的错误来了

如果我在代码行上方发表评论,我的应用程序将运行而不会崩溃。

您需要检查日历日期(cal.getTimeInMillis(((是否是欢迎者,然后是您当前的日期(System.currentTimeMillis(((

喜欢这个

if (cal.getTimeInMillis() < System.currentTimeMillis()) {
// Toast.makeText(getApplicationContext(),"Current time is big",Toast.LENGTH_SHORT).show();
d2.getDatePicker().setMinDate(cal.getTimeInMillis());
} else {
//  Toast.makeText(getApplicationContext(),"Current time is small",Toast.LENGTH_SHORT).show();
d2.getDatePicker().setMinDate(System.currentTimeMillis());
}

可能是这个帮助

最新更新