DatePickerDialog.OnDateSetListener bbrContactsBirthDateListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
String month;
String dayof;
if ((monthOfYear + 1) < 10) {
month = "0" + (monthOfYear + 1);
} else {
month = (monthOfYear + 1) + "";
}
if (dayOfMonth < 10) {
dayof = "0" + dayOfMonth;
} else {
dayof = dayOfMonth + "";
}
ageDay = year + "-" + month + "-" + dayof;
SimpleDateFormat format = new SimpleDateFormat("yyyy");
int NowYear = Integer.parseInt(format.format(new Date()));
SimpleDateFormat formatM = new SimpleDateFormat("MM");
int monthNow = Integer.parseInt(formatM.format(new Date()));
SimpleDateFormat formatD = new SimpleDateFormat("dd");
int dayOfMonthNow = Integer.parseInt(formatD
.format(new Date()));
//所选择日期到当前日期有多少年
ageSelect = NowYear - year;int a[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30 };
for (; year < NowYear; year++) {
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
Day += 366;
else
Day += 365;
}
for (; (monthOfYear + 1) < monthNow; monthOfYear++) {
Day += a[monthOfYear];
}
if (monthNow > 2
&& (NowYear % 4 == 0 && NowYear % 100 != 0 || NowYear % 400 == 0)) {
Day++;
}
//所选日期到当前日期有多少天
Day += dayOfMonthNow - dayOfMonth;if (ageSelect <= 55 && Day > 27) {
insuredAge.setText(ageSelect + "");
} else if (Day < 28) {
insuredAge.setText("");
showAlert("被保险人应出生满28天");
} else if (ageSelect > 55) {
insuredAge.setText("");
showAlert("被保险人不能超过55岁");
}
}
};
dialog = new DatePickerDialog(this, bbrContactsBirthDateListener,
calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH));
SimpleDateFormat format = new SimpleDateFormat("yyyy");
int NowYear = Integer.parseInt(format.format(new Date()));
SimpleDateFormat formatM = new SimpleDateFormat("MM");
int monthNow = Integer.parseInt(formatM.format(new Date()));
SimpleDateFormat formatD = new SimpleDateFormat("dd");
int dayOfMonthNow = Integer.parseInt(formatD.format(new Date()));
Date d = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
System.out.println("28天前的日期:"
+ df.format(new Date(d.getTime() - (long) 28 * 24 * 60 * 60
* 1000)));
//最小值,55年前的日期
minDate = (NowYear - 55) + "-" + monthNow + "-" + dayOfMonthNow;
//最大值,27天前的日期
maxDate = df.format(new Date(d.getTime() - (long) 27 * 24 * 60 * 60* 1000));
DatePicker datePicker = ((DatePickerDialog) dialog).getDatePicker();
//设置最大值和最小值
datePicker.setMinDate(stringToLong(minDate, "yyyy-MM-dd"));datePicker.setMaxDate(stringToLong(maxDate, "yyyy-MM-dd"));
如下图所示
注:手机当前时间是2017-08-09