跳过节假日和周末不上班案例

方式一:{LIst数据目前需要手动维护}

 /*** 算出两个时间间隔天数,遇上节假日和不上班周末【可能调休需要上】往后推* @param beginTime* @param endTime* @return* @throws ParseException*/public static  Integer  get(String beginTime, String  endTime) throws ParseException {// 2022-12-31LocalDate beginDate = LocalDate.parse(beginTime);LocalDate endDate = LocalDate.parse(endTime);//定义不工作的list[不调休的周末】List<String> holiday = new ArrayList<>();holiday.add("2022-10-24");holiday.add("2022-10-25");holiday.add("2022-10-01");holiday.add("2022-10-02");holiday.add("2022-10-03");holiday.add("2022-10-04");holiday.add("2022-10-05");holiday.add("2022-10-06");holiday.add("2022-10-07");holiday.add("2022-10-15");holiday.add("2022-10-16");holiday.add("2022-10-22");holiday.add("2022-10-23");holiday.add("2022-10-29");holiday.add("2022-10-30");holiday.add("2022-11-05");holiday.add("2022-11-06");//判断它是不是在不工作的list中,在就往下加一Boolean flag = true;String temp = endTime ;while(flag){if (holiday.contains(temp)){//String date="2022-12-31"; 加一temp =  LocalDate.parse(temp).plusDays(1).toString();}else {flag = false;}}LocalDate endValue = LocalDate.parse(temp);// 天数int sum = (int) (endValue.toEpochDay() - beginDate.toEpochDay());return  sum;}

方式二{LIst数据目前需要手动维护}

 /*** 算出两个时间间隔天数,遇上节假日往后推* @param beginTime* @param endTime* @return* @throws ParseException*/public static  Integer  get2(String beginTime, String  endTime) throws ParseException {// 2022-12-31LocalDate beginDate = LocalDate.parse(beginTime);LocalDate endDate = LocalDate.parse(endTime);//定义放假的listList<String> holiday = new ArrayList<>();//中秋节holiday.add("2022-09-10");holiday.add("2022-09-11");holiday.add("2022-09-12");//国庆节holiday.add("2022-10-01");holiday.add("2022-10-02");holiday.add("2022-10-03");holiday.add("2022-10-04");holiday.add("2022-10-05");holiday.add("2022-10-06");holiday.add("2022-10-07");//加班的周末List<String> nWeek = new ArrayList<>();// 国庆周末调休nWeek.add("2022-10-08");nWeek.add("2022-10-09");String  temp = skipWork(endTime,holiday,nWeek);LocalDate endValue = LocalDate.parse(temp);// 天数int sum = (int) (endValue.toEpochDay() - beginDate.toEpochDay());return  sum;}/*** 得到时间往后推的最终时间* @param dateTime  时间* @param holiday 放假时间* @param nWeek 周末需要工作时间* @return XXXX-XX-XX 最终时间*/public  static String  skipWork(String dateTime,List<String> holiday,List<String> nWeek){Boolean  flag = true;String temp = dateTime ;while (flag){LocalDate endDate = LocalDate.parse(temp);DayOfWeek week = endDate.getDayOfWeek();if (holiday.contains(temp)){// 判断是放假--holidaytemp =  LocalDate.parse(temp).plusDays(1).toString();continue;} else if((week == DayOfWeek.SATURDAY || week == DayOfWeek.SUNDAY) && !nWeek.contains(temp)) {//判断是为周末并且不加班temp =  LocalDate.parse(temp).plusDays(1).toString();}else {flag = false;}}return temp;}

主函数

 public static void main(String[] args) throws ParseException {int  hh = get2("2022-09-30","2022-10-01");System.out.println(hh);}

java中求某个时间跳过节假日和周末相关推荐

  1. Java节假日接口,增加天数跳过节假日

    在项目中遇到增加天数跳过节假日的需求,网上查询各种api之后,决定自己开发一个小demo. 此处记载开发思路. 一.初始化每年的日期,并标记工作日.周末.节假日.这里每年初始化一次,然后手动更改日期的 ...

  2. 计算有效工作日(跳过节假日)

    在实际开发过程中,我们很多时候会遇到节假日处理的问题.由于前段时间工作需要,所以通过各种平台搜集资料,整理出下面的代码. 备注:主要是给定一个初始日期,然后给定一个时间范围,要求自动跳过节假日以及双休 ...

  3. java中求5的阶乘

    题目如上所示:java中求5的阶乘是多少? 什么事阶乘呢? 答:阶乘是基斯顿·卡曼(Christian Kramp,1760-1826)于 1808 年发明的运算符号,是数学术语. 一个正整数的阶乘( ...

  4. Java中获取当前时间

    Java中获取当前时间 1)获取当前时间.返回类型为long类型,这个值其实是距离 1970-01-01 00:00:00 相差的毫秒数 import java.util.Date;public cl ...

  5. Java中得到GMT 时间(格林时间)

    GMT 时间(格林时间) 即中央时区时间,北京时间是在东八区,所以北京时间= 格林时间+8小时. java中得到GMT时间的大代码片段如下: Calendar cd = Calendar.getIns ...

  6. Java中求一个数的幂次方

    Java中求 m 的 n 次方不能使用 m^n,可使用 Math.pow(m, n) 来求m的n次方,求得结果为浮点类型.

  7. java中的四个跳转语句_Java中的流程控制语句 (基础篇四)

    流程控制就是对事物次序的布置和安排,在程序中就是对代码执行次序的安排和控制 程序中的流程控制主要有三种:顺序流程.选择流程.循环流程. 顺序流程:比如打印输出的代码按照指定的顺序结构依次排序,打印的结 ...

  8. java中的日期时间的计算与比较

    在JAVA中日期的计算与比较可以使用Date和DateFormat来解决 public class Test{ public static void main(String[] args){ try{ ...

  9. java中日期比较方法_在java中进行日期时间比较的4种方法

    1. Date.compareTo() java.util.Date 提供了在 Java 中比较两个日期的经典方法compareTo(). 如果两个日期相等,则返回值为0. 如果Date在date参数 ...

最新文章

  1. mysql中sql语句
  2. fasta和fastq格式文件的shell小练习 http://www.bio-info-trainee.com/3575.html
  3. mootools1.3.1源码解读
  4. C/C++学习之路_六: 指针
  5. 由炮灰模型到“微软钻石题”
  6. 索引-css-第二版-pyhui
  7. 黄国兴计算机应用基础,黄国兴计算机应用基础 - 百度学术
  8. linux的/dev内容介绍
  9. 【编译器】VSCode配置Go语言开发环境
  10. 刘德华2007新歌《一》歌词及在线试听地址
  11. java生成sm4算法的对称密钥_技术分享丨这是一篇简单的小科普——什么是对称加密算法?(下)...
  12. c语言用户给顺序表输入值,C语言与数据结构实验指导(删减程序版)课案.docx
  13. windows server 2003产生的 Minidmp蓝屏文件分析求助
  14. Linux学习笔记6 - 用户和组群账户管理
  15. 工商管理专业知识与实务(中级)【4】
  16. K3CLOUD安装教程
  17. msg1500说明书_拆解电信定制 瑞斯达康MSG1500 双频路由器
  18. 手机微信中的文档存放位置
  19. 【超详细附参考】阿里云部署spring项目基本流程详解及踩坑经验
  20. Python+unittest+requests 接口自动化测试框架搭建 完整的框架搭建过程 实战

热门文章

  1. 推荐几本学习Java的教材
  2. java网页作业提交_基于JAVA网上作业提交批改系统的设计(SQL)(含录像)
  3. Mapbox加载天地图CGCS2000矢量瓦片地图服务
  4. 别不信,小宝宝爱盯着妈妈看原来跟大脑发育有关
  5. Nothing——for 情人节
  6. 四川创峄信息科技有限公司企业公章管理
  7. Facebook多账号运营如何防关联
  8. Winfrom实现微信扫码支付功能
  9. 《青春》英语美文欣赏(中英对照)
  10. 初识Hibernate——关系映射