使用码云PublicHoliday项目获取国家法定假日的信息,然后再利用hutool工具方法判断是否为周末,从而判断某天是否为工作日
代码
package com.xxx.datasql.util;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Author: yren
* @Date: 2022/6/21
*/
public class HolidayUtils {
// 测试
public static void main(String[] args) {
System.out.println("判断一个非工作日: " + isWorkDay("2022-06-03"));
System.out.println("判断一个非工作日: " + isWorkDay("2022-06-05"));
System.out.println("判断一个工作日: " + isWorkDay("2022-06-06"));
System.out.println("判断一个工作日: " + isWorkDay("2022-05-07"));
System.out.println("节假日: " + HolidayInfoOfYear);
}
private static Map<String, String> HolidayInfoOfYear = new HashMap<>();
private static List<Integer> Years = new ArrayList<>();
/**
* 获取国家的节假日信息
*/
private synchronized static Map<String, String> getHolidayInfoOfYear(Integer year) {
if (Years.contains(year)) {
return HolidayInfoOfYear;
}
try {
RestTemplate restTemplate = new RestTemplate();
String url = "https://gitee.com/holate/public-holiday/raw/master/holidays/year/" + year + ".json";
ResponseEntity<String> responseEntity = restTemplate.getForEntity(url, String.class);
String body = responseEntity.getBody();
JSONObject jsonObject = JSON.parseObject(body);
jsonObject.getJSONObject("holiday").forEach((k, v) -> HolidayInfoOfYear.put(year + k.replace("-", ""), MapUtil.getStr((Map) v, "wage")));
} catch (Exception ex) {
ex.printStackTrace();
}
Years.add(year);
return HolidayInfoOfYear;
}
public static boolean isWorkDay(String dateTime) {
return isWorkDay(DateUtil.parse(dateTime));
}
public static boolean isWorkDay(DateTime dateTime) {
Map<String, String> holidayInfoOfYear = getHolidayInfoOfYear(dateTime.year());
String val = holidayInfoOfYear.get(dateTime.toString(DatePattern.PURE_DATE_PATTERN));
if (StrUtil.isBlank(val)) {
return !DateUtil.isWeekend(dateTime);
}
/**
* 根据 http://timor.tech/api/holiday/
* 1, 2, 3 => 周末、节日、调休
* 1 代表是周末,但是因为放节假日,还需要上班
* 2 代表是节假日,休息
* 3 代表不是周末,但是是节假日调休,休息
*/
return val.equals("1");
}
}
运行结果
以下内容可以忽略
发文助手会检测您的文章标题、错别字、内容质量,助您提升文章质量。【创作规范】
发文助手会检测您的文章标题、错别字、内容质量,助您提升文章质量。【创作规范】
发文助手会检测您的文章标题、错别字、内容质量,助您提升文章质量。【创作规范】
发文助手会检测您的文章标题、错别字、内容质量,助您提升文章质量。【创作规范】
发文助手会检测您的文章标题、错别字、内容质量,助您提升文章质量。【创作规范】
发文助手会检测您的文章标题、错别字、内容质量,助您提升文章质量。【创作规范】
发文助手会检测您的文章标题、错别字、内容质量,助您提升文章质量。【创作规范】
发文助手会检测您的文章标题、错别字、内容质量,助您提升文章质量。【创作规范】
发文助手会检测您的文章标题、错别字、内容质量,助您提升文章质量。【创作规范】
发文助手会检测您的文章标题、错别字、内容质量,助您提升文章质量。【创作规范】
发文助手会检测您的文章标题、错别字、内容质量,助您提升文章质量。【创作规范】
发文助手会检测您的文章标题、错别字、内容质量,助您提升文章质量。【创作规范】
发文助手会检测您的文章标题、错别字、内容质量,助您提升文章质量。【创作规范】
发文助手会检测您的文章标题、错别字、内容质量,助您提升文章质量。【创作规范】
发文助手会检测您的文章标题、错别字、内容质量,助您提升文章质量。【创作规范】
发文助手会检测您的文章标题、错别字、内容质量,助您提升文章质量。【创作规范】
发文助手会检测您的文章标题、错别字、内容质量,助您提升文章质量。【创作规范】