如何从date对象计算day,如果我属于weekend,那么在java中增加它?

如何从date对象计算day,如果我属于weekend,那么在java中增加它?,java,datetime,calendar,Java,Datetime,Calendar,我有4个日期,即今天(当前系统日期)、活动日期、QuoteFinishFirstFollowUpdate和quoteFinishSecondFollowupDate,我根据一些标准计算了这些日期,但如果计算的日期是周末(即周六、周日),则我们需要增加或增加天数,以便下一个日期将是工作日。那么,如何计算天数并将其相加,使其成为工作日?我尝试了一些东西,但对于Date对象,我无法计算日期 以下是我的代码: if (logs != null && logs.size() > 0)

我有4个日期,即今天(当前系统日期)、活动日期、QuoteFinishFirstFollowUpdate和quoteFinishSecondFollowupDate,我根据一些标准计算了这些日期,但如果计算的日期是周末(即周六、周日),则我们需要增加或增加天数,以便下一个日期将是工作日。那么,如何计算天数并将其相加,使其成为工作日?我尝试了一些东西,但对于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);
  }
}

有人能帮我吗?

我能看到的主要问题是您使用的是过时的
Date
类。您应该看看Java 8中添加的日期/时间API(
LocalDate
LocalTime
LocalDateTime
),下面是一个.Use
c.add(Calendar.Date,nDays)以增加日期。为什么您总是添加
2
?如果是周六可以,但如果是周日??正如Amongalen所说,
Date
类已经过时了。我想你指的是只涉及工作日的日期计算。那么公共假日呢?我以前见过人们通过使用日历数据库表来实现这一点。您每天有366个字符。您可以预先生成它,以便轻松排除Sat/Sun,因此,在那些日子里,它们的值应该是零。工作日有1天。那么你就省略了特别的公共假日。那么你有一个种子期,然后说5个工作日后。。你在数组中数到5个。你还必须在年底阅读2张唱片。。。或者如果你的约会跨越了几年,比如说超过400天……我也建议你不要使用
日期
日历
。这些课程设计拙劣,早已过时。改为使用来自的
LocalDate
。我看到的主要问题是您使用的是过时的
Date
类。您应该看看Java 8中添加的日期/时间API(
LocalDate
LocalTime
LocalDateTime
),下面是一个.Use
c.add(Calendar.Date,nDays)以增加日期。为什么您总是添加
2
?如果是周六可以,但如果是周日??正如Amongalen所说,
Date
类已经过时了。我想你指的是只涉及工作日的日期计算。那么公共假日呢?我以前见过人们通过使用日历数据库表来实现这一点。您每天有366个字符。您可以预先生成它,以便轻松排除Sat/Sun,因此,在那些日子里,它们的值应该是零。工作日有1天。那么你就省略了特别的公共假日。那么你有一个种子期,然后说5个工作日后。。你在数组中数到5个。你还必须在年底阅读2张唱片。。。或者如果你的约会跨越了几年,比如说超过400天……我也建议你不要使用
日期
日历
。这些课程设计拙劣,早已过时。改为使用中的
LocalDate
from。