1、判断当前日期是否为工作日{isWorkingDay(Date date);}

2、判断当前时间是否为工作时间{workTime(Date date);}

3、判断当前时间是否在时间段内{belongCalendar(Date nowTime, Date beginTime, Date endTime);}


import java.text.SimpleDateFormat;
import java.time.DayOfWeek;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/*** @ClassName HolidayUtil* @Description 判断工作日、工作时间工具类* @Author Kai* @Date 2023/2/21 14:57* @Version 1.0**/
public class HolidayUtil {private static final String workTime ="9:00:00";//上班时间private static final String restTime ="17:00:00";//休息时间private static final SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss"); // 设置日期格式private static List<String> holiday =new ArrayList<>();private static List<String> extraWorkDay =new ArrayList<>();/*** @Author Wang.YuanKai* @Description 判断当前日期是否为工作日* @Date 10:29 2023/3/1* @Param [date]* @return java.lang.Boolean**/public static Boolean isWorkingDay(Date date) {LocalDateTime dateTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();String formatTime = dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));initHoliday();initExtraWorkDay();//是否调休日期if(extraWorkDay.contains(formatTime)){return true;}//是否节假日if(holiday.contains(formatTime)){return false;}//如果是1-5表示周一到周五  是工作日DayOfWeek week = dateTime.getDayOfWeek();return week != DayOfWeek.SATURDAY && week != DayOfWeek.SUNDAY;}public static void main(String[] args) {Boolean workingDay = isWorkingDay(new Date());if(workingDay){System.out.println("工作日,加油,打工人");}else {System.out.println("开开心心过节,高高兴兴干饭!!!");}}/*** @Author Kai* @Description 初始话节假日,需要手动录入当年放假调休的上班时间* @Date 10:30 2023/3/1* @Param**/public static void initHoliday(){holiday.add("2023-04-05");holiday.add("2023-04-29");holiday.add("2023-04-30");holiday.add("2023-05-01");holiday.add("2023-05-02");holiday.add("2023-05-03");holiday.add("2023-06-22");holiday.add("2023-06-23");holiday.add("2023-06-24");holiday.add("2023-09-29");holiday.add("2023-09-30");holiday.add("2023-10-01");holiday.add("2023-10-02");holiday.add("2023-10-03");holiday.add("2023-10-04");holiday.add("2023-10-05");holiday.add("2023-10-06");}/*** @Author Kai* @Description 初始化额外加班日,,需要手动录入当年放假调休的休息时间* @Date 10:32 2023/3/1* @Param**/public static void initExtraWorkDay(){extraWorkDay.add("2023-04-23");extraWorkDay.add("2023-05-06");extraWorkDay.add("2023-06-25");extraWorkDay.add("2023-10-07");extraWorkDay.add("2023-10-08");}/*** @Author Kai* @Description 判断当前时间是否为工作时间(不判断工作日)* @Date 10:32 2023/3/1* @Param [now]* @return boolean**/public static boolean workTime(Date now){Calendar calendar = Calendar.getInstance();calendar.setTime(now);                 //放入Date类型数据calendar.get(Calendar.HOUR_OF_DAY);             //时(24小时制)calendar.get(Calendar.MINUTE);                  //分calendar.get(Calendar.SECOND);                   //秒Date beginTime = null;Date endTime = null;try {beginTime = df.parse(workTime);endTime = df.parse(restTime);} catch (Exception e) {e.printStackTrace();}assert beginTime != null;return belongCalendar(calendar.getTime(), beginTime, endTime);}/*** @Author Kai* @Description 判断时间是否在时间段内* @Date 10:35 2023/3/1* @Param**/public static boolean belongCalendar(Date nowTime, Date beginTime, Date endTime) {if (nowTime.getTime() == beginTime.getTime()|| nowTime.getTime() == endTime.getTime()) {return true;}Calendar date = Calendar.getInstance();date.setTime(nowTime);Calendar begin = Calendar.getInstance();begin.setTime(beginTime);Calendar end = Calendar.getInstance();end.setTime(endTime);return date.after(begin) && date.before(end);}}

Java工具包(一):假期/工作日/工作时间判断相关推荐

  1. execel公式 java工具,MyExcel(Excel Java工具包) v3.0.0下载

    MyExcel是一款集导入.导出.加密Excel等多项功能的Java工具包. 导入:提供简便的API,读取Excel内容,并转化为List< Bean >. 导出:可快速导出海量数据的简单 ...

  2. 每个java程序都至少有一个线程给主线程,java程序在主线程中判断各个子线程状态的操作,该如何解决...

    java程序在主线程中判断各个子线程状态的操作 每个子线程在队列为空时会wait等待其他线程添加新url到队列,到最后所有子线程都取不到url时也会都wait住,要在主线程中判断如果所有的子线程都是w ...

  3. java蓝桥杯算法训练 奇偶判断

    试题 算法训练 奇偶判断 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 能被2整除的数称为偶数,不能被2整除的数称为奇数.给一个整数x,判断x是奇数还是偶数. 输入格式 输入包括一 ...

  4. java能否构成三角形_java中判断三个参数是否能构成三角形的方法

    java中判断三个参数是否能构成三角形的方法 发布时间:2020-06-25 14:02:58 来源:亿速云 阅读:171 作者:Leah 这篇文章将为大家详细讲解有关java中判断三个参数是否能构成 ...

  5. Java基础算法题(01):判断101-200之间有多少个素数,并输出所有素数。 素数又叫质数,就是除了1和它本身之外,再也没有整数能被它整除的数。也就是素数只有两个因子。

    查看所有50道基础算法题请看: Java的50道基础算法题 import java.util.ArrayList; import java.util.List; public class Detect ...

  6. 提供源码:java获取节假日、工作日,存入数据库,查找指定日期前一天,后一天。

    提供源码:java获取节假日.工作日,存入数据库,查找指定日期前一天,后一天. 码云地址: https://gitee.com/guyuanman/holiday 业务场景: 好多公司的业务在处理的时 ...

  7. JAVA工具包MyEclipse,eclipse,汤姆猫资源附上视频教程32,64。

    刚创建的账号,新人第一次发文章. 在这里我想分享一下JAVA工具给大家,许多人还是没能够找到可用的MyEclipse,这里给大家分享一下. 评论留下邮箱还有JAVA工具包~~获取QQ727681868 ...

  8. python 中节假日(工作日)判断

    python 中节假日(工作日)判断 安装包 pip install chinesecalendar 对以下日期进行节假日以及周末判断 2021-04-03 周六 清明节 2020-04-10 周六 ...

  9. java无线电台RS制信号_中国MOOC_零基础学Java语言_第2周 判断_2信号报告

    2 信号报告(5分) 题目内容: 无线电台的RS制信号报告是由三两个部分组成的: R(Readability) 信号可辨度即清晰度. S(Strength)    信号强度即大小. 其中R位于报告第一 ...

最新文章

  1. pycharm安装过程及文件
  2. Oracle 提示符
  3. 专注于网络安全的数据中心在莫斯科开通运营
  4. k8s架构组件功能介绍
  5. asp.net接受表单验证格式后再提交数据_如何解析 el-form-renderer 表单渲染器1.14.0...
  6. layui 表格点击图片放大
  7. Systrace的用法小结
  8. 京东:网传通过 Bug 抢茅台是假消息;罗永浩回应带货价格非「全网最低」;Rust 文档团队解散 | 极客头条...
  9. python基础知识-Python基础知识
  10. Spring Boot: 加密应用配置文件敏感信息
  11. OOP思想指的是什么?
  12. 盘古开发框架集成 ShenYu 网关实现 Dubbo 泛化调用
  13. android 恢复出厂设置 时间,安卓恢复出厂设置
  14. 交叉编译器的安裝以及使用 (Linaro 交叉编译器 基于Ubuntu16)
  15. python打开摄像头黑屏怎么办_python、cv2.imshow()、raspberryPi和黑屏
  16. 链接库 -L -l -I -i的作用及区别
  17. 发光二极管之—工作原理图解分析
  18. dva是什么游戏_守望先锋DVA上分攻略 DVA使用技巧详解
  19. 基于PHP+Mysql全品类在线购物商城设计
  20. 使用mp4v2将H264+AAC合成mp4文件

热门文章

  1. 央视曝光微信“养号”灰产,谈如何防范互联网黑产
  2. 8位移位相加乘法器-Verilog
  3. 杂谈篇之我是怎么读源码的,授之以渔
  4. Python Matplotlib库绘制曲线图 最快入门教程(最详细最简单)
  5. python 动态规划 旅行商问题_旅行商问题的动态规划解法
  6. 都说Python是万能的,这五大主要用途你一定要知道!
  7. 依赖注入(DI)的三种方式
  8. 卸载 OpenJDK
  9. 诚之和:巨人网络拟收购《摩尔庄园》开发商72.81%股权,15亿花得值
  10. php mysql签到系统_php实现签到功能