在此感谢节假日API提供者。

实体(根据需求确认是否需要),需要重写hashCode、equals

import lombok.Data;import java.time.LocalDateTime;@Data
public class HolidayEntity {/*** 主键ID*/private Integer id;/*** 日期*/private String date;/*** 日期类型[0:工作日,1:休息日,2:法定节假日]*/private String dateType;/*** 日期备注[如:国庆节]*/private String dateRemark;/*** 所属年度*/private Integer ofYear;/*** 状态[1:启用; 2:禁用]*/private Integer status;/*** 创建时间*/private LocalDateTime createdDate;/*** 创建人*/private String createdBy;/*** 更新时间*/private LocalDateTime updatedDate;/*** 更新人*/private String updatedBy;/*** 重写equals方法,如果对象类型是HolidayEntity,先比较hashcode,一致的场合再比较每个属性的值*/@Overridepublic boolean equals(Object obj) {// System.out.println("调用equals方法,当前的hashCode为:"+hashCode());/** 对象是 null 直接返回 false **/if (obj == null) {return false;}/** 对象是当前对象,直接返回 true **/if (this == obj) {return true;}/** 判断对象类型是否是User **/if (obj instanceof HolidayEntity) {HolidayEntity vo = (HolidayEntity) obj;/** 比较每个属性的值一致时才返回true **//** 有几个对象就要比较几个属性 **/if (vo.date.equals(this.date)) {return true;}}return false;}/*** 重写hashcode方法,返回的hashCode一样才再去比较每个属性的值*/@Overridepublic int hashCode() {return this.getDate().hashCode() * this.getDate().hashCode();}
}

HolidayUtil

import cn.lin.entity.HolidayEntity;
import com.alibaba.fastjson.JSONObject;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;import java.io.IOException;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.*;public class HolidayUtil {public static void main(String[] args) {Calendar calendar = Calendar.getInstance();int year = calendar.get(Calendar.YEAR);List<HolidayEntity> holidayEntities = new ArrayList<>();for (int i = 1; i < 13; i++) {String format = new DecimalFormat("00").format(Integer.valueOf(i));Set<HolidayEntity> holiday = getHoliday(year, format);holidayEntities.addAll(holiday);}System.out.println(1);}/*** 获取节假日** @param year  例如:2022* @param month  例如:05  小于10的要有 0* @return*/public static Set<HolidayEntity> getHoliday(int year, String month){Set<HolidayEntity> set = new HashSet<>();// 获取节假日不含周末------获取指定月份String url = "http://timor.tech/api/holiday/year/"+year+"-"+month;OkHttpClient client = new OkHttpClient();Response response;//解密数据String rsa = null;Request request = new Request.Builder().url(url).get().addHeader("Content-Type", "application/x-www-form-urlencoded").build();// 补班的日期List<String> dateWorks = new ArrayList<>();try {response = client.newCall(request).execute();rsa = response.body().string();Map map = JSONObject.parseObject(rsa, Map.class);Map<String, Map<String, Object>> holiday = (Map<String, Map<String, Object>>) map.get("holiday");Set<String> strings = holiday.keySet();for (String str : strings) {Map<String, Object> stringObjectMap = holiday.get(str);boolean bool = (Boolean) stringObjectMap.get("holiday");//筛选掉补班if (bool) {String date = (String) stringObjectMap.get("date");HolidayEntity holidayEntity = new HolidayEntity();holidayEntity.setDate(date);holidayEntity.setDateType("法定节假日");holidayEntity.setDateRemark(String.valueOf(stringObjectMap.get("name")));set.add(holidayEntity);} else {String date = (String) stringObjectMap.get("date");dateWorks.add(date);}}} catch (IOException e) {e.printStackTrace();}// 获取所有周末Calendar cal = Calendar.getInstance();cal.set(Calendar.YEAR, year);cal.set(Calendar.MONTH, Integer.valueOf(month) - 1);cal.set(Calendar.DATE, 1);SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");while (cal.get(Calendar.YEAR) == year &&cal.get(Calendar.MONTH) < Integer.valueOf(month)) {int day = cal.get(Calendar.DAY_OF_WEEK);Date date = (Date)cal.getTime().clone();String time = simpleDateFormat.format(date);if (day == Calendar.SUNDAY && !dateWorks.contains(time)) { // 排除周末排班HolidayEntity holidayEntity = new HolidayEntity();holidayEntity.setDate(time);holidayEntity.setDateType("休息日");holidayEntity.setDateRemark("周日");set.add(holidayEntity);}if ( day == Calendar.SATURDAY && !dateWorks.contains(time)) { // 排除周末排班HolidayEntity holidayEntity = new HolidayEntity();holidayEntity.setDate(time);holidayEntity.setDateType("休息日");holidayEntity.setDateRemark("周六");set.add(holidayEntity);}cal.add(Calendar.DATE, 1);}return set;}
}

获取所有节假日及周末相关推荐

  1. 【现成工具】java获取国家法定节假日包含指定月份节假日和周末

    首先感谢大佬提供的免费API接口调用,http://timor.tech/api/holiday .该API工具类可以获取到国家法定节假日,此节假日为严格按照国家要求的双休和法定节假日并且包含节假日的 ...

  2. java获取国家法定节假日和周末

    java获取国家法定节假日和周末 package com.lxh.config.utils;import com.alibaba.fastjson.JSONObject; import okhttp3 ...

  3. 获取当年的法定节假日和周末_通过可配置的周末和节假日添加工作日

    获取当年的法定节假日和周末 介绍 我已经找到了一个如何计算两个日期之间的工作日数的示例,但是我还没有找到一种发布方法来添加工作日. Excel最近添加了此功能,但Microsoft尚未将其提供给Acc ...

  4. 超实用工具:获取法定节假日、休息日、周末天数

    我们国家有法定节假日,有因为法定节假日需要额外补班的周末,还有平常普通的周末,如何创建一个工具类,能很方便的知道这些信息呢?如下的代码能实现这些功能: 给定日期,判断是否是法定节假日. 给定日期,判断 ...

  5. JAVA判断当前时间是否为节假日、周末、工作日,简单有效!

    JAVA判断当前时间是否为节假日.周末.工作日 需求 有这么个需求,需要判断传的这个日期是否为节假日,周末,工作日,然后做剩下的操作. 话不多说,上代码 1.首先需要拿到节假日api 节假日API地址 ...

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

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

  7. Python3 获取法定节假日

    站在巨人的肩膀上. 想要获取法定节假日时,找到了这位大佬的博客. https://blog.csdn.net/joson1234567890/article/details/106214810 但是问 ...

  8. 分享一个大佬的网站,获取法定节假日

    可以获取法定节假日 免费节假日 API - 提莫的神秘商店免费节假日api, 免费好用,简洁好看的文档.可能是最良心的免费节假日API接口了.具有TTS接口,可直接返回人类可阅读的中文结果, 持续更新 ...

  9. Python获取法定节假日

    Python获取法定节假日 import requests from bs4 import BeautifulSoup as BS# 获取指定月份节假日 def get_holidays(year, ...

最新文章

  1. springMVC静态资源访问不到
  2. Google工程师带你学算法
  3. distanceTransform函数
  4. swift 函数.和匿名函数
  5. IDEA中找不到maven插件Plugin ‘org.apache.tomcat.maven:tomcat7-maven-plugin:2.2‘ not found
  6. 小米岭南通服务器维护,小米岭南通交通联合卡内测开启
  7. mysql迭代查询并分页_mysql 数据库 分页查询优化
  8. maven项目 Java compiler level does not match the version of the installed Java project facet
  9. 墨天轮章芋文:用十年打造中国的数据库生态体系
  10. [Swift]LeetCode113. 路径总和 II | Path Sum II
  11. 使用layui遇到的一些问题及解决方案
  12. 安徽省级办公室高级应用计算机二级,2019年9月安徽省计算机等级二级考试教程:二级MSOffice高级应用上机指导...
  13. webview 加载时闪烁黑一下_Web端页面加载卡顿缓慢问题解决方法分享
  14. php递归5,5.5.1 PHP递归函数
  15. 评论安装_评论送|机电安装监理质量控制要点130页
  16. 简单74LS138介绍(抄自原理图)
  17. PS小知识(三)——画圆滑线及虚线
  18. 基于python的购物比价_python比价
  19. vue使用高德地图api,点击地图标记,弹出弹窗,使用animate让弹窗有动画的加载
  20. 读书笔记-袁腾飞讲高效学习法

热门文章

  1. python名人问题_Python 思考录 练习01
  2. 小项目----音乐在线播放器
  3. 如何用Python将Word文档转换为Excel表格
  4. macunity日志目录_Unity-日志文件
  5. wps 2003 给WPS设置保护眼睛的淡绿色呢?
  6. 佳能R5专业微单相机介绍
  7. sony6000正在连接服务器,极速对焦+11张每秒连拍 Sony A6000评测
  8. python控制苹果手机触摸屏失灵怎么办_iPhone手机触屏不灵敏怎么办 触屏失灵乱跳等问题解决方法大全必看...
  9. Java获取客户端ip和端口
  10. VUE 项目图标全部替换成阿里巴巴矢量图