java实现T+n工作日判断(节假日判断)
程序员文章站
2022-03-03 10:01:11
...
节假日每年都不一样,没有特定的规律,所以需要手工做配置,在数据库中建一张holiday表记录节假日,包括周六日放假,字段包含id(唯一标识), holiday(具体的节假日日期),然后定期删除旧的节假日数据,导入新一年的节假日数据。
T:当前日期
T+0:如果T是节假日,则相当于T+1
T+n:接下来的第n个工作日
import java.util.Date;
import java.util.List;
import org.apache.commons.lang3.time.DateUtils;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@Service
public class HolidayServiceImpl extends ServiceImpl<HolidayMapper, Holiday> implements IHolidayService {
@Override
public Date nextNWorkDay(Date date, Integer n){
List<Holiday> holidays= this.list();
if (n == 0) { // T+0,如果T是节假日就相当于T+1
for (Holiday holiday: holidays) {
if (DateUtils.isSameDay(date, holiday.getHoliday())) {
n = 1;
}
}
}
int delay = 1;
while (delay <= n) {
boolean addDelay = true;
date = DateUtils.addDays(date, 1);
for (Holiday holiday: holidays) {
if (DateUtils.isSameDay(date, holiday.getHoliday())) {
addDelay = false;
break;
}
}
if (addDelay) {
delay++;
}
}
return date;
}
}