java 请假时间计算
时间: 2023-03-31 17:02:23 浏览: 133
好的,我可以回答这个问题。Java 请假时间计算可以通过计算请假开始时间和结束时间之间的天数来实现。可以使用 Java 中的 Date 类或者 Calendar 类来计算两个日期之间的天数,然后根据请假类型和请假天数来计算实际请假时间。
相关问题
java 实现请假开始时间、请假结束时间算出天数,节假日不算
以下是 Java 实现请假开始时间、请假结束时间算出天数,节假日不算的示例代码:
```java
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.HashSet;
import java.util.Set;
public class LeaveDaysCalculator {
private Set<LocalDate> holidays;
public LeaveDaysCalculator() {
holidays = new HashSet<>();
// 将节假日加入到集合中
holidays.add(LocalDate.of(2021, 10, 1));
holidays.add(LocalDate.of(2021, 10, 2));
holidays.add(LocalDate.of(2021, 10, 3));
holidays.add(LocalDate.of(2021, 10, 4));
holidays.add(LocalDate.of(2021, 10, 5));
holidays.add(LocalDate.of(2021, 10, 6));
holidays.add(LocalDate.of(2021, 10, 7));
}
public int calculateLeaveDays(LocalDate startDate, LocalDate endDate) {
int leaveDays = (int) ChronoUnit.DAYS.between(startDate, endDate) + 1;
// 排除节假日
for (LocalDate date = startDate; date.isBefore(endDate.plusDays(1)); date = date.plusDays(1)) {
if (date.getDayOfWeek().getValue() >= 6 || holidays.contains(date)) {
leaveDays--;
}
}
return leaveDays;
}
public static void main(String[] args) {
LeaveDaysCalculator calculator = new LeaveDaysCalculator();
LocalDate startDate = LocalDate.of(2021, 10, 8);
LocalDate endDate = LocalDate.of(2021, 10, 15);
int leaveDays = calculator.calculateLeaveDays(startDate, endDate);
System.out.println("请假天数:" + leaveDays);
}
}
```
在示例代码中,我们使用了 Java 8 中的 LocalDate 类来处理日期,使用 ChronoUnit.DAYS.between() 方法计算请假天数。在计算请假天数时,我们遍历请假期间的每一天,如果该天是周六、周日或者节假日,则将请假天数减一。
Java 实现请假开始时间、请假结束时间算出天数,节假日、周末不算,节假日、周末动态查询
这个问题需要用到 Java 的日期时间处理类库和查询节假日、周末的 API。
首先,我们可以使用 Java8 引入的 LocalDate 类来处理日期。可以使用 `LocalDate.parse` 方法将字符串转换为 LocalDate 对象,然后使用 `ChronoUnit.DAYS.between` 方法计算两个日期之间的天数。
为了排除节假日、周末,我们需要查询一个日期是否为节假日或周末。这可以通过调用查询 API 来实现。例如,可以使用中国各省市的节假日 API 或者中国法定节假日 API 进行查询。
以下是一个示例代码,假设已经有了查询节假日、周末的 API:
```java
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
public class LeaveDaysCalculator {
// 假设已经有了查询节假日、周末的 API
private HolidayAPI holidayAPI;
public int calculateLeaveDays(String startDateStr, String endDateStr) {
LocalDate startDate = LocalDate.parse(startDateStr);
LocalDate endDate = LocalDate.parse(endDateStr);
int days = 0;
LocalDate date = startDate;
while (!date.isAfter(endDate)) {
// 排除周末和节假日
if (!isWeekend(date) && !isHoliday(date)) {
days++;
}
date = date.plusDays(1);
}
return days;
}
private boolean isWeekend(LocalDate date) {
return date.getDayOfWeek().getValue() >= 6;
}
private boolean isHoliday(LocalDate date) {
return holidayAPI.isHoliday(date);
}
}
```
其中 `holidayAPI.isHoliday(date)` 方法返回值为 `true` 表示当天是节假日,否则为工作日。