话不多说,直接上代码
需要引入的pom文件
<!--fastjson --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.47</version></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.11</version></dependency>
获取国家法定节假日代码
package com.example.datetest.config;import cn.hutool.http.HttpUtil;import com.alibaba.fastjson.JSONObject;import java.text.SimpleDateFormat;import java.util.*;public class HolidayUtils {/*** java获取国家法定节假日和周末* @param year /* @param month /* @return /*/public static Set<String> JJR(int year, int month) {//获取所有的周末Set<String> monthWekDay = getMonthWekDay(year, month);//http://timor.tech/api/holiday api文档地址JSONObject jjr = getJjr(year, month);Integer code = jjr.getInteger("code");if (code != 0) {return monthWekDay;}Map<String, Map<String, Object>> holiday = (Map<String, Map<String, Object>>) jjr.get("holiday");Set<String> strings = holiday.keySet();for (String str : strings) {Map<String, Object> stringObjectMap = holiday.get(str);Integer wage = (Integer) stringObjectMap.get("wage");String date = (String) stringObjectMap.get("date");//筛选掉补班if (wage.equals(1)) {monthWekDay.remove(date);} else {monthWekDay.add(date);}}return monthWekDay;}/*** 获取节假日不含周末* @param year /* @param month /* @return /*/private static JSONObject getJjr(int year, int month) {String url = "http://timor.tech/api/holiday/year/"+year+"-"+month;String result = HttpUtil.get(url);JSONObject jsonObject = JSONObject.parseObject(result);return jsonObject;}/*** 获取周末 月从0开始* @param year /* @param month /* @return /*/public static Set<String> getMonthWekDay(int year, int month) {month = month - 1 ;Set<String> dateList = new HashSet<>();SimpleDateFormat simdf = new SimpleDateFormat("yyyy-MM-dd");Calendar calendar = new GregorianCalendar(year, month, 1);Calendar endCalendar = new GregorianCalendar(year, month, 1);endCalendar.add(Calendar.MONTH, 1);while (true) {int weekday = calendar.get(Calendar.DAY_OF_WEEK);if (weekday == 1 || weekday == 7) {dateList.add(simdf.format(calendar.getTime()));}calendar.add(Calendar.DATE, 1);if (calendar.getTimeInMillis() >= endCalendar.getTimeInMillis()) {break;}}return dateList;}}