请假开始时间、请假结束时间算出天数,节假日不算
时间: 2023-11-14 16:39:41 浏览: 146
在计算请假天数时,需要排除掉节假日,可以按照以下步骤进行计算:
1. 将请假开始时间和结束时间转换为时间戳(即秒数);
2. 根据时间戳计算出请假天数,即(结束时间的时间戳 - 开始时间的时间戳)/ (24 * 60 * 60),其中24 * 60 * 60表示一天的秒数;
3. 排除掉请假期间的节假日。可以通过一个节假日表来实现,该表中记录了所有节假日的日期。
4. 对于请假开始时间和结束时间所在的日期,需要进行特殊处理。如果该日期是节假日,则不计入请假天数;如果是工作日,则计入请假天数。
需要注意的是,节假日表需要及时更新,以反映最新的节假日信息。同时,为了提高计算效率,可以将节假日表存储在内存中,或者使用缓存技术。
相关问题
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
import java.time.DayOfWeek;
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 = 0;
// 遍历请假期间的每一天
for (LocalDate date = startDate; date.isBefore(endDate.plusDays(1)); date = date.plusDays(1)) {
if (date.getDayOfWeek() != DayOfWeek.SATURDAY && date.getDayOfWeek() != DayOfWeek.SUNDAY && !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);
}
}
```
在示例代码中,我们遍历请假期间的每一天,如果该天是周末或者节假日,则将请假天数不计入统计。如果该天是工作日,则将请假天数加一。