如何从date对象计算day,如果我属于weekend,那么在java中增加它?
我有4个日期,即今天(当前系统日期)、活动日期、QuoteFinishFirstFollowUpdate和quoteFinishSecondFollowupDate,我根据一些标准计算了这些日期,但如果计算的日期是周末(即周六、周日),则我们需要增加或增加天数,以便下一个日期将是工作日。那么,如何计算天数并将其相加,使其成为工作日?我尝试了一些东西,但对于Date对象,我无法计算日期 以下是我的代码:如何从date对象计算day,如果我属于weekend,那么在java中增加它?,java,datetime,calendar,Java,Datetime,Calendar,我有4个日期,即今天(当前系统日期)、活动日期、QuoteFinishFirstFollowUpdate和quoteFinishSecondFollowupDate,我根据一些标准计算了这些日期,但如果计算的日期是周末(即周六、周日),则我们需要增加或增加天数,以便下一个日期将是工作日。那么,如何计算天数并将其相加,使其成为工作日?我尝试了一些东西,但对于Date对象,我无法计算日期 以下是我的代码: if (logs != null && logs.size() > 0)
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);
}
}
有人能帮我吗?我能看到的主要问题是您使用的是过时的
Date
类。您应该看看Java 8中添加的日期/时间API(LocalDate
,LocalTime
,LocalDateTime
),下面是一个.Usec.add(Calendar.Date,nDays)代码>以增加日期。为什么您总是添加2
?如果是周六可以,但如果是周日??正如Amongalen所说,Date
类已经过时了。我想你指的是只涉及工作日的日期计算。那么公共假日呢?我以前见过人们通过使用日历数据库表来实现这一点。您每天有366个字符。您可以预先生成它,以便轻松排除Sat/Sun,因此,在那些日子里,它们的值应该是零。工作日有1天。那么你就省略了特别的公共假日。那么你有一个种子期,然后说5个工作日后。。你在数组中数到5个。你还必须在年底阅读2张唱片。。。或者如果你的约会跨越了几年,比如说超过400天……我也建议你不要使用日期
和日历
。这些课程设计拙劣,早已过时。改为使用来自的LocalDate
。我看到的主要问题是您使用的是过时的Date
类。您应该看看Java 8中添加的日期/时间API(LocalDate
,LocalTime
,LocalDateTime
),下面是一个.Usec.add(Calendar.Date,nDays)代码>以增加日期。为什么您总是添加2
?如果是周六可以,但如果是周日??正如Amongalen所说,Date
类已经过时了。我想你指的是只涉及工作日的日期计算。那么公共假日呢?我以前见过人们通过使用日历数据库表来实现这一点。您每天有366个字符。您可以预先生成它,以便轻松排除Sat/Sun,因此,在那些日子里,它们的值应该是零。工作日有1天。那么你就省略了特别的公共假日。那么你有一个种子期,然后说5个工作日后。。你在数组中数到5个。你还必须在年底阅读2张唱片。。。或者如果你的约会跨越了几年,比如说超过400天……我也建议你不要使用日期
和日历
。这些课程设计拙劣,早已过时。改为使用中的LocalDate
from。