判断当前日期是否为法定节假日(API接口调用)

package com.mln.wateroa.common;


import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import net.sf.json.JSONObject;


public class DateUtil {
/**
* @param urlAll :请求接口实例 //http://timor.tech/api/holiday/info/2021-06-16 也可以
* @param httpArg :日期参数yyyy-MM-dd
* @return 返回结果如下  {"code":0,"type":{"type":0,"name":"周三","week":3},"holiday":null}

*/
public JSONObject request( String httpArg) {
BufferedReader reader = null;
String result = null;
JSONObject jsonObjectResult = null;
StringBuffer sbf = new StringBuffer();
String httpUrl = "免费节假日API_原百度节假日API=" + httpArg;

try {
URL url = new URL(httpUrl);
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("GET");
connection.connect();
InputStream is = connection.getInputStream();
reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
String strRead = null;
while ((strRead = reader.readLine()) != null) {
sbf.append(strRead);
sbf.append("\r\n");
}
reader.close();
result = sbf.toString();
jsonObjectResult = JSONObject.fromObject(result);//转为JSONObject对象
} catch (Exception e) {
e.printStackTrace();
}
return jsonObjectResult;
}
public static void main(String[] args) {
JSONObject a = new DateUtil().request("20180101");
    System.out.println(a);
}
}

### 如何用Java判断当前日期是否法定节假日Java中,可以通过以下方法来判断当前日期是否法定节假日。通常的做法是结合已知的节假日数据进行匹配,或者通过调用第三方API获取实时的节假日信息。 #### 方法一:使用本地节假日数据集 可以将所有法定节假日存储在一个集合中(例如`HashSet`),然后检查给定日期是否存在于该集合中。这种方法适用于节假日数据固定且不频繁更新的情况。 ```java import java.time.LocalDate; import java.util.HashSet; import java.util.Set; public class HolidayChecker { public static boolean isHoliday(LocalDate date) { int year = date.getYear(); Set<LocalDate> holidays = new HashSet<>(HolidayService.getHolidays(year)); return holidays.contains(date); } public static void main(String[] args) { LocalDate date = LocalDate.now(); // 获取当前日期 boolean isHoliday = isHoliday(date); System.out.println("当前日期是否为假日:" + isHoliday); } } ``` 上述代码中,`HolidayService.getHolidays(year)`是一个假设的方法,用于返回某一年的所有法定节假日列表[^3]。 #### 方法二:调用第三方API 如果需要动态获取节假日信息,可以调用提供节假日服务的第三方API。以下是一个示例,展示如何通过HTTP请求获取当前日期是否法定节假日。 ```java import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class HolidayUtil { public static String checkHolidayStatus(String httpArg) throws Exception { URL url = new URL(httpArg); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); String inputLine; StringBuilder response = new StringBuilder(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); return response.toString(); } public static void main(String[] args) { try { String httpArg = "https://api.example.com/holiday?date=" + LocalDate.now(); String result = checkHolidayStatus(httpArg); System.out.println("当前日期状态:" + result); // 返回结果可能为0(工作日)、1(周末)、2(节假日) } catch (Exception e) { e.printStackTrace(); } } } ``` 在上述代码中,`https://api.example.com/holiday`是一个假设的API地址,实际应用中需要替换为具体的API接口[^1]。 #### 方法三:结合日期类型判断 除了直接判断是否节假日外,还可以进一步区分当前日期是工作日、双休日还是法定节假日。以下是一个简单的实现: ```java public enum DateType { WORKDAY, WEEKEND, HOLIDAY } public class DateClassifier { public static DateType classifyDate(LocalDate date) { if (isWeekend(date)) { return DateType.WEEKEND; } else if (isHoliday(date)) { return DateType.HOLIDAY; } else { return DateType.WORKDAY; } } private static boolean isWeekend(LocalDate date) { return date.getDayOfWeek().getValue() >= 6; // 周六和周日 } private static boolean isHoliday(LocalDate date) { int year = date.getYear(); Set<LocalDate> holidays = new HashSet<>(HolidayService.getHolidays(year)); return holidays.contains(date); } public static void main(String[] args) { LocalDate date = LocalDate.now(); DateType type = classifyDate(date); System.out.println("当前日期类型:" + type); } } ``` 此代码通过枚举类型`DateType`区分了工作日、双休日和法定节假日,并分别进行了判断[^2]。 ### 注意事项 - 如果使用本地数据集,需要确保节假日数据的完整性和及时性。 - 如果调用第三方API,需注意API的稳定性和访问频率限制。 - 在处理日期时,应考虑时区问题,确保日期计算的准确性。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张大大大大旭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值