У меня есть 4 даты, т. Е. Сегодня (текущая системная дата), дата активности, quoteFinishFirstFolloupDate и quoteFinishSecondFollowupDate, которые я рассчитал по некоторым критериям, но если эта расчетная дата падает в выходные дни (ie. Суббота, воскресенье), тогда мы нужно увеличить или добавить дни, чтобы следующая дата была днем недели. Итак, как я могу рассчитать дни и сложить их, чтобы это была дата дня недели? Я пробовал что-то, но для объекта Date я не могу рассчитать дни.
Вот мой кусок кода:
if (logs != null && logs.size() > 0) {
ActivityLog latestActivityLog = logs.get(0);
Date activityDate = latestActivityLog.getActivityDate();
Date today = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(today);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
// check if it is Saturday(day=7) or Sunday(day=1)
if ((dayOfWeek == 7)) {
cal.add(Calendar.DAY_OF_WEEK, 2);
today = cal.getTime();
}else if ((dayOfWeek == 1)) {
cal.add(Calendar.DAY_OF_WEEK, 2);
today = cal.getTime();
}else {
today = cal.getTime();
}
// @TODO: @RD to check +1 day logic
// plus 1 to include the endate=today+26 with time at 1pm
Date quoteFinishFirstFolloupDate = DateUtils.addDays(activityDate, -1 * getUnboundQuoteFirstFollowupDays());
Date quoteFinishSecondFollowupDate = DateUtils.addDays(quoteFinishFirstFolloupDate, getUnboundQuoteSecondFollowupDays());
if (today.compareTo(quoteFinishFirstFolloupDate) == 0 || today.compareTo(quoteFinishSecondFollowupDate) == 0) {
isValidCCVB_ActivityLog = Boolean.TRUE;
log.info("isValidCCVB_ActivityLog:" + isValidCCVB_ActivityLog);
}
}
Может ли кто-нибудь мне помочь?