JAVA判断当前日期是否是工作日,还是节假日
2023-03-07 09:15:51 时间
在使用hutool工具包的时候,发现hutool工具包无法判断是否是工作日还是节假日(因为每年节假日各不相同,所以自己写了一个) 当前只有2021年的数据,后续的数据需要等国务院发布 节假日数据来源:国务院办公厅关于2021年部分节假日安排的通知
package cn.hjljy.crawler.demo.holiday;
import com.sun.org.apache.xpath.internal.operations.Bool;
import java.text.SimpleDateFormat; import java.time.DayOfWeek; import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneOffset; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List;
/**
- 度假服务 *
- @author hjljy
- @date 2021/07/27 */
public class HolidayService {
static List<String> holiday =new ArrayList<>();
static List<String> extraWorkDay =new ArrayList<>();
public static Boolean isWorkingDay(long time) {
LocalDateTime dateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(time), ZoneOffset.of("+8"));
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();
if(week==DayOfWeek.SATURDAY||week==DayOfWeek.SUNDAY){
return false;
}
return true;
}
public static void main(String[] args) {
Boolean workingDay = isWorkingDay(System.currentTimeMillis());
if(workingDay){
System.out.println("工作日,加油,打工人");
}else {
System.out.println("开开心心过节,高高兴兴干饭!!!");
}
}
/**
* 初始化节假日
*/
public static void initHoliday(){
holiday.add("2021-01-01");
holiday.add("2021-01-02");
holiday.add("2021-01-03");
holiday.add("2021-02-11");
holiday.add("2021-02-12");
holiday.add("2021-02-13");
holiday.add("2021-02-14");
holiday.add("2021-02-15");
holiday.add("2021-02-16");
holiday.add("2021-02-17");
holiday.add("2021-04-03");
holiday.add("2021-04-04");
holiday.add("2021-04-05");
holiday.add("2021-05-01");
holiday.add("2021-05-02");
holiday.add("2021-05-03");
holiday.add("2021-05-04");
holiday.add("2021-05-05");
holiday.add("2021-06-12");
holiday.add("2021-06-13");
holiday.add("2021-06-14");
holiday.add("2021-09-19");
holiday.add("2021-09-20");
holiday.add("2021-09-21");
holiday.add("2021-10-01");
holiday.add("2021-10-02");
holiday.add("2021-10-03");
holiday.add("2021-10-04");
holiday.add("2021-10-05");
holiday.add("2021-10-06");
holiday.add("2021-10-07");
}
/**
* 初始化额外加班日
*/
public static void initExtraWorkDay(){
extraWorkDay.add("2021-02-07");
extraWorkDay.add("2021-02-20");
extraWorkDay.add("2021-04-25");
extraWorkDay.add("2021-05-08");
extraWorkDay.add("2021-09-18");
extraWorkDay.add("2021-09-26");
extraWorkDay.add("2021-10-09");
}
}
不得不说hutool工具包还是很强大的,还能根据时间获取农历,获取属相,星座等等
相关文章
- Java要抛弃祖宗的基业,Java程序员危险了!
- 十大 Java 语言特性
- JVM 三色标记算法,原来是这么回事!
- 聊聊 Spring 事务控制策略以及 @Transactional 失效问题避坑
- 写给 Java 程序员的前端 Promise 教程
- 写给 Java 程序员的前端 Promise 教程,你学会了吗?
- Java 中为什么不全部使用 Static 方法?
- Java 池化技术你了解多少?
- Java 服务 Docker 容器化优秀实践
- Spring Boot + EasyExcel导入导出,简直太好用了!
- 我们一起聊聊 Java 内存泄漏
- CentOS 下安装 Docker 极简教程
- JDK 19 功能集冻结:Java 19 只有七个新特性
- 关于 CMS 垃圾回收器,你真的懂了吗?
- 为什么会有这么多编程语言?
- 改善Java代码的八个建议
- 接口流量突增,如何做好性能优化?
- Java 以编程方式创建JAR文件
- POJO、Java Bean是如何定义的
- Spring 的 Bean 明明设置了 Scope 为 Prototype,为什么还是只能获取到单例对象?