最近工作中遇到个需求,大致的实现功能是,在某一天的基础上加上规定的天数,所加的这些天中不包括周六日以及节假日。
比如:

在2月7日的基础上加7天,这7天不包含节假日和周六日,所以最后的时间应该是2月22日。

分享一下代码:

由于我们把每一年的节假日以及周六日配置到数据库中了,所以下面有个是判断数据库中存不存在当前的日期。
如果不用数据库,可以把假日放到文本中,或者其他的方法。当然这些不重要,只是数据的处理。

如下:将21年的周六日以及节假日存到数据库中了。(当然这样数据准备会麻烦,后续会优化)

代码如下:

/*** * * @param  tjsj:基础时间   days:需要加的时间* * */
public Date getQxwcDate(Date tjsj, int days) throws Exception {Calendar calendar = Calendar.getInstance();calendar.setTime(tjsj);//计数器int i = 0;while(i<days) {//当i等于days时,停止循环//先将基础时间加一天,只需要判断后一天是否是节假日或者周六日即可,不是计数器加一,这样就会与时间一致。calendar.add(Calendar.DATE, 1);tjsj = calendar.getTime();//获取加一天之后的时间SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");String ymd = simpleDateFormat.format(tjsj);//判断提交日期是否是节假日或周末boolean isContains = ippcXtglHolidayGzrDao.checkIsContains(ymd);if(!isContains) {//不是节假日或周六日,计数器加一i++;}}return tjsj;}

测试方法

public void testHoli() throws Exception {String date = "2021-02-07 14:03:25";SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date parse = simpleDateFormat.parse(date);System.out.println("基础时间:  "+parse);Date qxwcDate = ippcXtglHolidayGzrService.getQxwcDate(parse, 7);System.out.println("最后时间:  "+simpleDateFormat.format(qxwcDate));}

结果:

日期累加器(任意时间基础上加上天数,不包括节假日以及周六日)相关推荐

  1. java实现剩余年假计算_计算两个日期之间的天数、工时(去除周六日、年假日)...

    需求: 有个外出申请的功能,我填写上外出申请时间.外出返回日期, 自动计算出 外出的天数和工时(其中不包含周六日.年假日) 外出申请日期 :2020-12-24 14:54:00 外出返回日期 : 2 ...

  2. MySql计算两日期时间之间相差的天数,秒数,分钟数,周数,小时数

    计算两日期时间之间相差的天数,秒数,分钟数,周数,小时数,这里主要分享的是通过MySql内置的函数 TimeStampDiff() 实现. 函数 TimeStampDiff() 是MySQL本身提供的 ...

  3. window 2008+apache2.4.4+php5.5+mysql-5.6.12+phpmyadmin4.0.4.1安装过程(参考他人文章基础上加上自己遇到的问题)...

    一.window server2008的安装 1.我用U盘安装的,先用UltraISO把server2008刻录到U盘中,过程我搜了一下,帖个地址: http://wenku.baidu.com/vi ...

  4. 学习笔记(06):Python网络编程并发编程-在简单套接字基础上加上通信循环

    立即学习:https://edu.csdn.net/course/play/24458/296235?utm_source=blogtoedu 1.服务器端 #以打电话通讯为例子进行说明 #导入相应的 ...

  5. java常用的时间工具—原日期的基础上增加时间

    java常用的时间工具 1.在原日期的基础上增加天数 /*** 在原日期的基础上增加天数*/ public static Date add(Date date, int num) {Calendar ...

  6. calender加3天_JAVA日期或者时间加减法,加上几天或者减去

    /** * 日期的加减方法 * 用于在当前的天或者小时或者分钟或者月份的基础上加上或者减去若干小时,分钟,日,月 * @param currentDay 当前月份的某一天 * @param day ( ...

  7. Java获取当前时间的上一个月和下一个月,第一天和最后一天,任意时间的第一天和最后一天,任意时间上一个月和下一个月

    /*** 获取当前时间* * @param args*/public static String getNowTime() {Calendar cal = Calendar.getInstance() ...

  8. date日期 和 date时间拼接_函数周期表丨时间丨值丨DATE

    DATE函数 语法= DATE(<年>, <月>, <日>) DATE函数,属于"值函数"之一,返回某个具体的日期.用的频率不是特别的高,一般用 ...

  9. 智能跳过节假日算法java_java计算两个日期之前的天数实例(排除节假日和周末)...

    java计算两个日期之前的天数实例(排除节假日和周末) 发布时间:2020-09-02 23:07:01 来源:脚本之家 阅读:108 作者:jingxian 如题所说,计算两个日期之前的天数,排除节 ...

最新文章

  1. EasyDL桌面版发布!3天体验学习
  2. oracle技术之Oracle 跟踪事件(一)
  3. 做中间件的这两年总结(201704-201905)
  4. 撰写论文时word使用诀窍标题
  5. 在用户退出后,清除缓存,防止用户后退到网站中的功能页面
  6. 河源市计算机组装竞赛,计算机组装大赛决赛圆满结束
  7. 【数据结构与算法】之深入解析“比特位计数”的求解思路与算法示例
  8. 字符串问题之 在有序但含有空的数组中查找字符串
  9. 设计一个应用程序,以在C#中的按钮单击事件上在MessageBox中显示TextBox中的文本...
  10. 了解 64 位 Office
  11. ubuntu终端安装python_Ubuntu linux下安装python3(手动安装)
  12. python怎么读取excel-python怎么读取excel表格
  13. php如何查看端口有没被占用,怎么查看80端口占用情况? 如何查看端口占用情况...
  14. 计算机怎么不显示打开文件桌面,开机不显示桌面图标怎么办【解决方法】
  15. 一张纸厚度是多少毫米_10张纸的厚度大约是多少10张纸能有多厚
  16. 矩阵键盘——按下矩阵按键,数码管显示出位置对应的字符(0123 4567 89Ab CdEF)
  17. 中南大学2021计算机专硕复试分数线,中南大学2021年硕士研究生复试基本分数线...
  18. win 访问linux加密硬盘分区,手把手教你使用BitLocker给win10硬盘分区加密的方法
  19. excel 基础笔记整理
  20. c++数组指针和指针数组详解

热门文章

  1. 入库单出库单能否实现仓库只有审核权无反审核权
  2. 万由NS202,ESXI虚拟机下安装OpenWRT+群晖NAS+Windows,打造All in One系统
  3. Adobe Illustrator从入门到精通教学全集
  4. 使用员工绩效改进计划来提高生产力
  5. 【微信多开】windows系统同时登陆多个微信
  6. python数据可视化分析-matplotlib
  7. 汽车中的前置箱SGA是怎么进行内存管理的?
  8. 一代宗师__循环一致性生成对抗网络(CycleGAN)(八)
  9. 挤公交闲谈与虚析构函数精讲
  10. 网钛CMS PHP 1.2,网钛CMS PHP版 V2.80 更新记录