首先感谢github大佬的分享,大家也可以去网址下面去看这个api接口如何使用,下面我来简单介绍一下。
github地址:
https://github.com/tomandjerry136/hodiday?tab=readme-ov-file
该接口支持按年、月、日来查询当天的信息,包括是否为工作日、是否调休、如果为节假日的话节假日的信息等...非常好用,下面是这个接口会返回的字段
{ "daytype": 1,//0表示工作日、1节假日、2双休日、3调休日(需上班) "holiday": "元旦节",//节假日情况 "rest": 1,//是否休息,0为不休息,1为休息 "date": "2024-01-01",//日期 "week": 1,//星期几,0为星期日,1为星期一,依次类推 "week_desc_en": "Monday",//星期几的英文描述 "week_desc_cn": "星期一"//星期几的中文描述 }
根据年份获取
接口地址:
例如 https://publicapi.xiaoai.me/holiday/year?date=2024
响应示例:
{
"code": 0,
"msg": "ok",
"data": [
{
"daytype": 1,
"holiday": "元旦节",
"rest": 1,
"date": "2024-01-01",
"week": 1,
"week_desc_en": "Monday",
"week_desc_cn": "星期一"
}
]
}
实际请求截图:
编辑
根据月份获取
接口地址:
例如 https://publicapi.xiaoai.me/holiday/month?date=2024-01
响应示例:
{
"code": 0,
"msg": "ok",
"data": [
{
"daytype": 1,
"holiday": "元旦节",
"rest": 1,
"date": "2024-01-01",
"week": 1,
"week_desc_en": "Monday",
"week_desc_cn": "星期一"
}
]
}
实际请求截图:
编辑
根据日期获取
接口地址:
例如 https://publicapi.xiaoai.me/holiday/day?date=2024-01-01
响应示例:
{
"code": 0,
"msg": "ok",
"data": [
{
"daytype": 1,
"holiday": "元旦节",
"rest": 1,
"date": "2024-01-01",
"week": 1,
"week_desc_en": "Monday",
"week_desc_cn": "星期一"
}
]
}
实际请求截图:
编辑
我在程序中的用法,以Java为例给大家提供一个我调用这个接口的示例:
1.首先声明该api接口的路径
/** * 节假日接口 * 该api接口查看链接:https://github.com/tomandjerry136/hodiday?tab=readme-ov-file * 示例返回如下 * { * "daytype": 1,//0表示工作日、1节假日、2双休日、3调休日(需上班) * "holiday": "元旦节",//节假日情况 * "rest": 1,//是否休息,0为不休息,1为休息 * "date": "2024-01-01",//日期 * "week": 1,//星期几,0为星期日,1为星期一,依次类推 * "week_desc_en": "Monday",//星期几的英文描述 * "week_desc_cn": "星期一"//星期几的中文描述 * } */ private static final String HOLIDAY_URL = "https://publicapi.xiaoai.me/holiday/day?date=";
2.调用
// 获取当前日期 LocalDate currentDate = LocalDate.now(); String url = HOLIDAY_URL + currentDate; OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(url) .build(); try (Response response = client.newCall(request).execute()) { if (!response.isSuccessful()) throw new IOException("Unexpected code " + response); ObjectMapper objectMapper = new ObjectMapper(); JsonNode jsonResponse = objectMapper.readTree(response.body().string()); JsonNode data = jsonResponse.get("data"); if (data.isArray()) { //data里面就是返回的Json数据,可以拿出来配合自己的逻辑进行判断 for (JsonNode holidayNode : data) { //0表示工作日、1节假日、2双休日、3调休日(需上班) int dayType = holidayNode.get("daytype").asInt(); //节假日情况 String holidayName = holidayNode.get("holiday").asText(); //是否休息 int rest = holidayNode.get("rest").asInt(); // 如果是节假日(daytype=1)或今天休息(rest=1) if (dayType == 1 || rest == 1) { return; } } } } catch (IOException e) { e.printStackTrace(); }
如果有关于任何开发上的问题欢迎大家我们一起交流学习!