我的应用程序中有一个DatePickerDialog,我想要将用户选择的日期限制在当前日期之前。我将从DatePickerDialog中选择的日期与newDate()进行比较,如果所选日期在之前,我会抛出错误。请找到如下代码。
DatePickerDialog datePickerDialog = new DatePickerDialog(this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
Calendar calendar = Calendar.getInstance();
calendar.set(year, monthOfYear, dayOfMonth);
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy");
String visitDate = dateFormat.format(calendar.getTime());
try {
Date appointDate = dateFormat.parse(visitDate);
Date currentDate = new Date();
if(appointDate.before(currentDate)){
appointmentDateInputLayout.setError("Date selected is not within range!");
}else{
appointmentDateEditText.setText(visitDate);
appointmentDateInputLayout.setError(null);
}
} catch (ParseException e) {
e.printStackTrace();
}
appointmentDateEditText.setText(visitDate);
}
}, mYear, mMonth, mDay);
datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis());
datePickerDialog.show();
但是当我这样做时,我也会因为选择今天的日期而收到错误。我希望用户允许当前日期。我在这里缺少什么?
请帮助。
答案 0 :(得分:0)
尝试与日历getTime()方法而不是当前日期进行比较。:
If(appointDate.before(calendar.getTime())
答案 1 :(得分:0)
看,
Date currentDate = new Date() ;
在实例化时以毫秒为单位分配日期对象,因此交替分配并将日期对象放在代码的第一个将给出非常早的时间,因此您选择visitdate的时间最终将是更大(之后)所以currentDate中的毫秒数将小于挑选的新日期中的毫秒数