Правильный способ сделать это нетривиально.У вас есть два случая (при условии, что вы не против игнорировать високосные секунды).
Если вы хотите интерпретировать TimeUnit.DAYS как точные 24 часа (в отличие от 23-25 часов в зависимости от изменений летнего времени)тогда вы можете просто добавить миллисекунды:
public static Date add(Date base, long span TimeUnit unit) {
return new Date(base.getTime() + unit.toMillis(span);
}
Если вы хотите распознать летнее время, то вам понадобится особый случай DAYS:
public static Date add(Date base, long span TimeUnit unit) {
if (TimeUnit.DAYS.equals(unit)) {
Calendar c = Calendar.getInstance();
c.setTime(base);
c.add(Calendar.DAY_OF_MONTH, (int) span);
return c.getTime();
}
return new Date(base.getTime() + unit.toMillis(span);
}