欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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;
	}

}