java 自动设置结束时间为n个工作日后的日期

简介: java 自动设置结束时间为n个工作日后的日期

需求:

自动设置截止日期为工作日15天,休息日和节假日顺延。

需要手动维护节假调休的工作日,以及非周末的节假日

例如:

5月1号,周四为节假日,则需要维护为节假日

5月4号,周天需要调休工作,则需要维护为调休工作日


1、定义表结构,维护节假日或工作日

CREATE TABLE `holiday_info` (
  `id` int(11) DEFAULT NULL COMMENT '主键id',
  `date_info` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '日期信息',
  `date_type` int(1) DEFAULT NULL COMMENT '日期类型(0:节假日  1:工作日)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2、编写程序,实现功能

  • java实现,其中days为多少个工作日之后。


public class Test{
    public String getDate(int days){
        int flag = 0;
        String startDate = DateUtil.parseDateToString(null, new Date());
        // 查询休息日
        Set<String> countRest = holidayInfoDao.getCount(startDate, 0);
        // 查询工作日
        Set<String> countWork = holidayInfoDao.getCount(startDate, 1);
        while(flag <= days){
            flag ++;
            Date date = DateUtil.addDateByDays(new Date(),flag);
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            int w = cal.get(Calendar.DAY_OF_WEEK);
            // 周天和周六为休息日 周天为1,周六为7
            if (w == 1 || w == 7){
                // 判断周六和周天不是调休的工作日,则延后一天
                if(!countWork.contains(DateUtil.parseDateToString(null, date))){
                    days ++;
                }
            }else{
                // 判断周一和周五是节假日,则延后一天
                if(countRest.contains(DateUtil.parseDateToString(null, date))){
                    days ++;
                }
            }
        }
        String result = DateUtil.parseDateToString(null,DateUtil.addDateByDays(new Date(),days));
        System.out.println(result);
        return  result;
    }
}


  • DateUtil.java日期处理类
import com.ict.framework.common.utils.StringUtil;
import org.sqlite.date.DateFormatUtils;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class DateUtil {
    //日期 转 str
    public static String parseDateToString(String format, Date date) {
        if (format == null) {
            format = "yyyy-MM-dd";
        }
       return DateFormatUtils.format(date, format);
    }
    public static Date addDateByDays(Date date, int Days) {
            Calendar calendar = new GregorianCalendar();
            calendar.add(Calendar.DATE, Days);
            date = calendar.getTime();
            return date;
    }
}


  • mybatis查询sql
select date_info from holiday_info where date_type = #{type} and date_info > #{startDate} 


目录
相关文章
|
2月前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
83 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
2月前
|
Java Linux iOS开发
如何设置 Java 的环境变量
设置Java环境变量是使用Java开发工具和运行Java程序的前提。主要步骤包括:安装JDK,配置系统环境变量中的JAVA_HOME、PATH和CLASSPATH,确保命令行可直接调用javac和java命令。
|
2月前
|
安全 Java Linux
java程序设置开机自启
java程序设置开机自启
117 1
|
2月前
|
Java API
Java的日期类都是怎么用的
【10月更文挑战第1天】本文介绍了 Java 中处理日期和时间的三个主要类:`java.util.Date`、`java.util.Calendar` 和 `java.time` 包下的新 API。`Date` 类用于表示精确到毫秒的瞬间,可通过时间戳创建或获取当前日期;`Calendar` 抽象类提供丰富的日期操作方法,如获取年月日及时区转换;`java.time` 包中的 `LocalDate`、`LocalTime`、`LocalDateTime` 和 `ZonedDateTime` 等类则提供了更为现代和灵活的日期时间处理方式,支持时区和复杂的时间计算。
42 14
|
3月前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
52 3
|
3月前
|
安全 Java API
时间日期API(Date,SimpleDateFormat,Calendar)+java8新增日期API (LocalTime,LocalDate,LocalDateTime)
这篇文章介绍了Java中处理日期和时间的API,包括旧的日期API(Date、SimpleDateFormat、Calendar)和Java 8引入的新日期API(LocalTime、LocalDate、LocalDateTime)。文章详细解释了这些类/接口的方法和用途,并通过代码示例展示了如何使用它们。此外,还讨论了新旧API的区别,新API的不可变性和线程安全性,以及它们提供的操作日期时间的灵活性和简洁性。
|
4月前
|
Java
比较两个日期是否相等Java
这篇文章提供了Java中比较两个日期是否相等的两种方法:使用`Calendar`类和`SimpleDateFormat`类来确定两个日期是否为同一天,并附有详细的代码示例和测试结果。
|
4月前
|
JSON Java API
【Azure API 管理】通过Java APIM SDK创建一个新的API,如何为Reqeust的Representation设置一个内容示例(Sample)?
【Azure API 管理】通过Java APIM SDK创建一个新的API,如何为Reqeust的Representation设置一个内容示例(Sample)?
|
4月前
|
缓存 前端开发 Java
【Azure 应用服务】App Service 使用Tomcat运行Java应用,如何设置前端网页缓存的相应参数呢(-Xms512m -Xmx1204m)?
【Azure 应用服务】App Service 使用Tomcat运行Java应用,如何设置前端网页缓存的相应参数呢(-Xms512m -Xmx1204m)?
|
4月前
|
固态存储 Java 网络安全
【Azure Developer】使用Java SDK代码创建Azure VM (包含设置NSG,及添加数据磁盘SSD)
【Azure Developer】使用Java SDK代码创建Azure VM (包含设置NSG,及添加数据磁盘SSD)