int ny = year, nm =month, nd =day;
nd-=1;
if (nd <= 0){
nd = 31;
nm-=1;
}
if (nm <= 0){
nm = 12;
ny-=1;
}
Calendar cal = Calendar.getInstance();
try{
cal.set(Calendar.YEAR, ny);
cal.set(Calendar.MONTH,nm);
cal.set(Calendar.DAY_OF_MONTH,nd);
}catch(ArrayIndexOutOfBoundsException e){
nd-=1;
cal.set(Calendar.YEAR, ny);
cal.set(Calendar.MONTH,nm);
cal.set(Calendar.DAY_OF_MONTH,nd);
}
return new SimpleDate(cal.getTime());
Календарь выдаст исключение, если указана неправильная дата. Таким образом мы проверяем, верен ли день месяца.