public final static Date addMonths(final Date date, final Integer noOfMonths) {
Calendar orgCal = GregorianCalendar.getInstance();
orgCal.setTime(date);
Calendar newCal = GregorianCalendar.getInstance();
newCal.setTime(date);
newCal.set(Calendar.DAY_OF_MONTH, 1);
int year = orgCal.get(Calendar.YEAR);
int month = orgCal.get(Calendar.MONTH) + 1;
// Calculate no. of month and no. of year should be added
int years_to_add = noOfMonths / 12;
int months_to_add = noOfMonths - 12 * years_to_add;
year += years_to_add;
month += months_to_add;
if (month > 12) {
month -= 12;
year++;
} else if (month < 1) {
month += 12;
year--;
}
// Set the year and month
newCal.set(Calendar.YEAR, year);
newCal.set(Calendar.MONTH, month - 1);
// The input date is last date of month
if (date.equals(lastDate(date))) {
newCal.set(Calendar.DAY_OF_MONTH, newCal
.getActualMaximum(Calendar.DAY_OF_MONTH));
} else if (newCal.getActualMaximum(Calendar.DAY_OF_MONTH) < orgCal
.get(Calendar.DAY_OF_MONTH))
newCal.set(Calendar.DAY_OF_MONTH, newCal
.getActualMaximum(Calendar.DAY_OF_MONTH));
else
newCal
.set(Calendar.DAY_OF_MONTH, orgCal
.get(Calendar.DAY_OF_MONTH));
Date result = newCal.getTime();
orgCal = null;
newCal = null;
return result;
}
Jave获取当前日期的上一个月最后一天或者下一个月最后一天
最新推荐文章于 2023-03-06 14:45:05 发布