Java本身沒有直接獲取法定節假日的功能,但可以通過調用第三方的接口或使用日歷庫來實現。
1. 調用第三方接口:可以使用一些提供法定節假日查詢的接口,如國家法定節假日數據接口、萬年歷API等。你需要先注冊并獲取API密鑰,然后通過HTTP請求調用接口獲取相應的節假日數據。
例如,使用國家法定節假日數據接口,可以通過以下代碼獲取指定日期的節假日信息:
```java
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class HolidayAPI {
public static void main(String[] args) {
try {
String apiKey = "your_api_key";
String date = "2022-01-01"; // 指定日期
String url = "http://api.goseek.cn/Tools/holiday?date=" + date;
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("User-Agent", "Mozilla/5.0");
int responseCode = con.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
} else {
System.out.println("GET request failed");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
2. 使用日歷庫:Java的`java.util.Calendar`類提供了一些日期計算的功能,可以通過判斷指定日期是否為法定節假日來獲取節假日信息。但這種方法需要自己維護一份法定節假日的數據。
例如,可以創建一個`HolidayUtil`類來判斷指定日期是否為法定節假日:
```java
import java.util.Calendar;
import java.util.Date;
public class HolidayUtil {
// 判斷指定日期是否為法定節假日
public static boolean isHoliday(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1;
int day = calendar.get(Calendar.DAY_OF_MONTH);
// 根據自己維護的法定節假日數據進行判斷
if (month == 1 && day == 1) { // 元旦節
return true;
} else if (month == 10 && day == 1) { // 國慶節
return true;
} else {
return false;
}
}
public static void main(String[] args) {
Date date = new Date(); // 指定日期
boolean isHoliday = isHoliday(date);
System.out.println(isHoliday);
}
}
```
以上兩種方法都可以根據自己的需求進行擴展和優化,實現更復雜的節假日查詢功能。