在 Java 中,计算两个日期之间的工作日数(不包括星期六和星期日)可以使用经过验证的方法来实现.
Java 8 及更高版本:
对于 Java 8 及更高版本,利用 java.time 包中的类可以简化此任务:
<code class="java">import java.time.LocalDate; import java.time.temporal.ChronoUnit; public class BusinessDaysCalculator { public static int getWorkingDaysBetweenTwoDates(LocalDate startDate, LocalDate endDate) { return (int) ChronoUnit.DAYS.between(startDate, endDate) - getWeekends(startDate, endDate); } private static int getWeekends(LocalDate startDate, LocalDate endDate) { return (int) Math.floor(ChronoUnit.DAYS.between(startDate, endDate) / 7) * 2; } }</code>
Java 8 之前的版本:
对于 Java 8 之前的版本,可以使用以下方法:
<code class="java">import java.util.Calendar; public class BusinessDaysCalculator { public static int getWorkingDaysBetweenTwoDates(Date startDate, Date endDate) { Calendar startCal = Calendar.getInstance(); startCal.setTime(startDate); Calendar endCal = Calendar.getInstance(); endCal.setTime(endDate); int workDays = 0; if (startCal.getTimeInMillis() == endCal.getTimeInMillis()) { return 0; } if (startCal.getTimeInMillis() > endCal.getTimeInMillis()) { startCal.setTime(endDate); endCal.setTime(startDate); } do { startCal.add(Calendar.DAY_OF_MONTH, 1); if (startCal.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY && startCal.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY) { ++workDays; } } while (startCal.getTimeInMillis() < endCal.getTimeInMillis()); return workDays; } }</code>
重要提示: 这些方法假设开始日期和结束日期是互斥的,这意味着它们不会包含在计数中。
以上是如何用Java计算两个日期之间的工作日数?的详细内容。更多信息请关注PHP中文网其他相关文章!