查看全局 API 说明(请求/响应头、通用 JSON 格式)
节假日判断 API
节假日判断、公历农历互查、节气、生肖星座与年度二十四节气
https://www.resapi.cn/v1/holidays
简介
判断法定假日与调休;公历与农历双向换算;查询节气、生肖与星座;按年列出 24 节气。适用于日历、排班与文化展示场景。
GET /v1/holidays/check
判断单日是否为节假日。
查询参数
| 名称 | 类型 | 必填 | 说明 | 示例 |
|---|---|---|---|---|
| date | string | 是 | 日期,格式 YYYY-MM-DD |
2026-10-01 |
响应字段
| 字段 | 说明 |
|---|---|
| date | 查询日期 |
| weekday / weekday_index | 星期(周日为 0) |
| is_weekend | 是否周末 |
| is_legal_holiday | 是否法定休假日 |
| holiday_name | 节日名称(命中时返回) |
| is_adjusted_workday | 是否调休上班日 |
| is_holiday | 是否休息日(综合周末 + 法定休假 + 调休) |
| is_workday | 是否工作日(is_holiday 取反) |
响应示例
{
"data": {
"date": "2026-10-01",
"weekday": "周四",
"weekday_index": 4,
"is_weekend": false,
"is_legal_holiday": true,
"holiday_name": "国庆节",
"is_adjusted_workday": false,
"is_holiday": true,
"is_workday": false
}
}
GET /v1/holidays/range
批量查询日期区间(含起止日)。
查询参数
| 名称 | 类型 | 必填 | 说明 | 示例 |
|---|---|---|---|---|
| start | string | 是 | 开始日期,格式 YYYY-MM-DD |
2026-10-01 |
| end | string | 是 | 结束日期,格式 YYYY-MM-DD |
2026-10-08 |
限制:单次区间最多 366 天。
响应说明
data:每天的判断结果(结构与/check一致)meta:区间统计信息(总天数、假日天数、工作日天数等)
响应示例
{
"data": [
{
"date": "2026-10-01",
"weekday": "周四",
"weekday_index": 4,
"is_weekend": false,
"is_legal_holiday": true,
"holiday_name": "国庆节",
"is_adjusted_workday": false,
"is_holiday": true,
"is_workday": false
}
],
"meta": {
"start": "2026-10-01",
"end": "2026-10-08",
"total_days": 8,
"holiday_days": 7,
"workday_days": 1
}
}
GET /v1/holidays/countdown
返回从“当前日期”到当年 12-31 的法定节假日倒计时(仅法定休假日,不含调休上班日)。
默认只返回下一个节假日;指定 all=1 返回剩余全部节假日列表。
查询参数
| 名称 | 类型 | 必填 | 说明 | 示例 |
|---|---|---|---|---|
| from | string | 否 | 基准日期,格式 YYYY-MM-DD,默认今天 |
2026-06-02 |
| all | bool | 否 | 1/true 返回全部,默认返回下一个 |
1 |
响应字段
| 字段 | 说明 |
|---|---|
data 在不同模式下结构不同: |
- 默认模式(不传
all):data为单个对象(下一个节假日) - 全量模式(
all=1):data为对象数组(到年底全部剩余节假日)
对象字段:
| 字段 | 说明 |
|---|---|
| date | 节假日日期 |
| holiday_name | 节日名称 |
| weekday | 星期 |
| days_remaining | 距离基准日剩余天数(当天为 0) |
响应示例(默认:下一个节假日)
{
"data": {
"date": "2026-09-25",
"holiday_name": "中秋节",
"weekday": "周五",
"days_remaining": 115
},
"meta": {
"from": "2026-06-02",
"to": "2026-12-31",
"year": 2026,
"total_holidays": 8
}
}
响应示例(all=1:全部剩余节假日)
{
"data": [
{
"date": "2026-09-25",
"holiday_name": "中秋节",
"weekday": "周五",
"days_remaining": 115
},
{
"date": "2026-10-01",
"holiday_name": "国庆节",
"weekday": "周四",
"days_remaining": 121
}
],
"meta": {
"from": "2026-06-02",
"to": "2026-12-31",
"year": 2026,
"total_holidays": 8
}
}
GET /v1/holidays/solar-to-lunar
公历日期转农历,返回公历/农历对照及生肖、星座。
查询参数
| 名称 | 类型 | 必填 | 说明 | 示例 |
|---|---|---|---|---|
| date | string | 是 | 公历日期 YYYY-MM-DD |
2026-06-03 |
响应字段
| 字段 | 说明 |
|---|---|
| solar | 公历日期、星期 |
| lunar | 农历年月日、闰月、干支、展示名 |
| zodiac | 农历年生肖 |
| constellation | 对应公历日期的星座 |
| note | 说明 |
响应示例
{
"data": {
"solar": {
"date": "2026-06-03",
"weekday": "周三",
"weekday_index": 3
},
"lunar": {
"year": 2026,
"month": 4,
"month_name": "四月",
"day": 18,
"day_name": "十八",
"is_leap_month": false,
"display": "农历丙午年四月十八",
"year_ganzhi": "丙午",
"month_ganzhi": "癸巳",
"day_ganzhi": "戊申"
},
"zodiac": { "name": "马", "index": 6, "year_ganzhi": "丙午" },
"constellation": { "name": "双子", "full_name": "双子座", "index": 2 },
"note": "农历与公历换算依据天文算法,仅供文化参考;生肖按农历年地支,星座按公历日期划分"
}
}
GET /v1/holidays/lunar-to-solar
农历日期转公历,返回公历/农历对照及生肖、星座。
查询参数
| 名称 | 类型 | 必填 | 说明 | 示例 |
|---|---|---|---|---|
| lunar_year | int | 是 | 农历年 | 2026 |
| lunar_month | int | 是 | 农历月(1–12) | 4 |
| lunar_day | int | 是 | 农历日 | 18 |
| leap_month | bool | 否 | 1/true 表示闰月(也可用 leap) |
1 |
闰月示例:2023 年闰二月十五 → lunar_year=2023&lunar_month=2&lunar_day=15&leap_month=1,对应公历 2023-04-05。
响应字段
与 /solar-to-lunar 相同(solar + lunar + zodiac + constellation)。
响应示例
{
"data": {
"solar": {
"date": "2026-06-03",
"weekday": "周三",
"weekday_index": 3
},
"lunar": {
"year": 2026,
"month": 4,
"month_name": "四月",
"day": 18,
"day_name": "十八",
"is_leap_month": false,
"display": "农历丙午年四月十八",
"year_ganzhi": "丙午",
"month_ganzhi": "癸巳",
"day_ganzhi": "戊申"
},
"zodiac": { "name": "马", "index": 6, "year_ganzhi": "丙午" },
"constellation": { "name": "双子", "full_name": "双子座", "index": 2 },
"note": "农历与公历换算依据天文算法,仅供文化参考;生肖按农历年地支,星座按公历日期划分"
}
}
GET /v1/holidays/lunar
查询指定公历日期的农历信息、当前节气、生肖(农历年属相)与星座(按公历划分)。比 /solar-to-lunar 额外返回 solar_term。
查询参数
| 名称 | 类型 | 必填 | 说明 | 示例 |
|---|---|---|---|---|
| date | string | 是 | 日期,格式 YYYY-MM-DD |
2026-06-03 |
响应字段
| 字段 | 说明 |
|---|---|
| date | 查询公历日期 |
| lunar | 农历年月日、闰月标记、干支、展示名 |
| solar_term | 当前所处节气、节气第几天、节/气类型、节气起始日 |
| zodiac | 生肖名、索引、农历年干支 |
| constellation | 星座简称、全称(如「双子座」)、索引 |
| note | 计算说明与免责提示 |
响应示例
{
"data": {
"date": "2026-06-03",
"lunar": {
"year": 2026,
"month": 4,
"month_name": "四月",
"day": 18,
"day_name": "十八",
"is_leap_month": false,
"display": "农历丙午年四月十八",
"year_ganzhi": "丙午",
"month_ganzhi": "癸巳",
"day_ganzhi": "戊申"
},
"solar_term": {
"name": "小满",
"day_of_term": 14,
"is_jie": false,
"is_qi": true,
"start_date": "2026-05-21"
},
"zodiac": {
"name": "马",
"index": 6,
"year_ganzhi": "丙午"
},
"constellation": {
"name": "双子",
"full_name": "双子座",
"index": 2
},
"note": "农历与节气依据天文算法计算,仅供文化参考;生肖按农历年地支,星座按公历日期划分"
}
}
GET /v1/holidays/terms
列出指定公历年的 24 节气及对应日期(从小寒起依次排列)。
查询参数
| 名称 | 类型 | 必填 | 说明 | 示例 |
|---|---|---|---|---|
| year | int | 否 | 公历年份,默认当年 | 2026 |
响应字段
data 为数组,每项:
| 字段 | 说明 |
|---|---|
| name | 节气名称 |
| date | 节气起始公历日 YYYY-MM-DD |
| is_jie | 是否为「节」 |
| is_qi | 是否为「气」 |
| index | 节气序号(库内索引) |
meta.year / meta.count / meta.note 为辅助信息。
响应示例
{
"data": [
{ "name": "小寒", "date": "2026-01-05", "is_jie": true, "is_qi": false, "index": 1 },
{ "name": "大寒", "date": "2026-01-20", "is_jie": true, "is_qi": false, "index": 2 }
],
"meta": {
"year": 2026,
"count": 24,
"note": "从小寒起依次列出 24 节气及对应公历日期"
}
}
通用错误码
以下错误码适用于平台全部 /v1/* 接口(各接口在「错误代码」Tab 中另有本接口补充说明)。
错误响应格式
HTTP 状态码非 2xx 时,响应体一般为:
{
"error": {
"code": "错误码",
"message": "错误信息"
}
}
错误码一览
| HTTP | code | message | 说明 |
|---|---|---|---|
| 400 | invalid_params | 参数无效 | 必填参数缺失、格式不合法或超出允许范围 |
| 404 | not_found | 资源不存在 | 按编码或 ID 查询时无匹配记录 |
| 429 | rate_limit_exceeded | 请求过于频繁 | 超过当前 IP 的访问频率限制 |
| 500 | internal_error | 服务器内部错误 | 服务端或数据库异常,请稍后重试 |
限流、缓存等 HTTP 响应头含义见上文「响应头说明」。
本接口补充
| HTTP | code | message | 说明 |
|---|---|---|---|
| 400 | invalid_params | 参数无效 | 日期格式错误、区间超限(>366 天)、end 早于 start、year 非法、农历年月日无效或闰月不存在 |
请求根地址为 https://www.resapi.cn。每个场景含 7 种语言(cURL → JavaScript → Python → Go → Java → PHP → C#)。
单日判断
GET /v1/holidays/check?date=2026-10-01
cURL
curl -s "https://www.resapi.cn/v1/holidays/check?date=2026-10-01" \
-H "Accept: application/json"
JavaScript
const res = await fetch("https://www.resapi.cn/v1/holidays/check?date=2026-10-01", {
headers: { Accept: "application/json" },
});
if (!res.ok) throw new Error(res.statusText);
console.log(await res.json());
Python
import requests
r = requests.get(
"https://www.resapi.cn/v1/holidays/check",
params={"date": "2026-10-01"},
headers={"Accept": "application/json"},
timeout=30,
)
r.raise_for_status()
print(r.json())
Go
package main
import (
"encoding/json"
"fmt"
"log"
"net/http"
)
func main() {
url := "https://www.resapi.cn/v1/holidays/check?date=2026-10-01"
req, _ := http.NewRequest(http.MethodGet, url, nil)
req.Header.Set("Accept", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var out map[string]any
if err := json.NewDecoder(resp.Body).Decode(&out); err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", out)
}
Java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Example {
public static void main(String[] args) throws Exception {
String url = "https://www.resapi.cn/v1/holidays/check?date=2026-10-01";
HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> res = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(res.body());
}
}
PHP
<?php
$url = "https://www.resapi.cn/v1/holidays/check?date=2026-10-01";
$ctx = stream_context_create([
"http" => ["header" => "Accept: application/json\r\n"],
]);
$json = file_get_contents($url, false, $ctx);
print_r(json_decode($json, true));
C#
using System.Net.Http.Headers;
var client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
var json = await client.GetStringAsync("https://www.resapi.cn/v1/holidays/check?date=2026-10-01");
Console.WriteLine(json);
区间判断
GET /v1/holidays/range?start=2026-10-01&end=2026-10-08
cURL
curl -s "https://www.resapi.cn/v1/holidays/range?start=2026-10-01&end=2026-10-08" \
-H "Accept: application/json"
JavaScript
const url = new URL("https://www.resapi.cn/v1/holidays/range");
url.searchParams.set("start", "2026-10-01");
url.searchParams.set("end", "2026-10-08");
const res = await fetch(url, { headers: { Accept: "application/json" } });
if (!res.ok) throw new Error(res.statusText);
console.log(await res.json());
Python
import requests
r = requests.get(
"https://www.resapi.cn/v1/holidays/range",
params={"start": "2026-10-01", "end": "2026-10-08"},
headers={"Accept": "application/json"},
timeout=30,
)
r.raise_for_status()
print(r.json())
Go
url := "https://www.resapi.cn/v1/holidays/range?start=2026-10-01&end=2026-10-08"
req, _ := http.NewRequest(http.MethodGet, url, nil)
req.Header.Set("Accept", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var out map[string]any
json.NewDecoder(resp.Body).Decode(&out)
fmt.Printf("%+v\n", out)
Java
String url = "https://www.resapi.cn/v1/holidays/range?start=2026-10-01&end=2026-10-08";
HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> res = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(res.body());
PHP
<?php
$url = "https://www.resapi.cn/v1/holidays/range?start=2026-10-01&end=2026-10-08";
$ctx = stream_context_create([
"http" => ["header" => "Accept: application/json\r\n"],
]);
$json = file_get_contents($url, false, $ctx);
print_r(json_decode($json, true));
C#
using System.Net.Http.Headers;
var client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
var json = await client.GetStringAsync("https://www.resapi.cn/v1/holidays/range?start=2026-10-01&end=2026-10-08");
Console.WriteLine(json);
下一个节假日(默认)
GET /v1/holidays/countdown?from=2026-06-02
cURL
curl -s "https://www.resapi.cn/v1/holidays/countdown?from=2026-06-02" \
-H "Accept: application/json"
JavaScript
const res = await fetch("https://www.resapi.cn/v1/holidays/countdown?from=2026-06-02", {
headers: { Accept: "application/json" },
});
if (!res.ok) throw new Error(res.statusText);
console.log(await res.json());
Python
import requests
r = requests.get(
"https://www.resapi.cn/v1/holidays/countdown",
params={"from": "2026-06-02"},
headers={"Accept": "application/json"},
timeout=30,
)
r.raise_for_status()
print(r.json())
Go
url := "https://www.resapi.cn/v1/holidays/countdown?from=2026-06-02"
req, _ := http.NewRequest(http.MethodGet, url, nil)
req.Header.Set("Accept", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var out map[string]any
json.NewDecoder(resp.Body).Decode(&out)
fmt.Printf("%+v\n", out)
Java
String url = "https://www.resapi.cn/v1/holidays/countdown?from=2026-06-02";
HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> res = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(res.body());
PHP
<?php
$url = "https://www.resapi.cn/v1/holidays/countdown?from=2026-06-02";
$ctx = stream_context_create([
"http" => ["header" => "Accept: application/json\r\n"],
]);
$json = file_get_contents($url, false, $ctx);
print_r(json_decode($json, true));
C#
using System.Net.Http.Headers;
var client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
var json = await client.GetStringAsync("https://www.resapi.cn/v1/holidays/countdown?from=2026-06-02");
Console.WriteLine(json);
剩余全部节假日倒计时
GET /v1/holidays/countdown?from=2026-06-02&all=1
cURL
curl -s "https://www.resapi.cn/v1/holidays/countdown?from=2026-06-02&all=1" \
-H "Accept: application/json"
JavaScript
const res = await fetch("https://www.resapi.cn/v1/holidays/countdown?from=2026-06-02&all=1", {
headers: { Accept: "application/json" },
});
if (!res.ok) throw new Error(res.statusText);
console.log(await res.json());
Python
import requests
r = requests.get(
"https://www.resapi.cn/v1/holidays/countdown",
params={"from": "2026-06-02", "all": 1},
headers={"Accept": "application/json"},
timeout=30,
)
r.raise_for_status()
print(r.json())
Go
url := "https://www.resapi.cn/v1/holidays/countdown?from=2026-06-02&all=1"
req, _ := http.NewRequest(http.MethodGet, url, nil)
req.Header.Set("Accept", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var out map[string]any
json.NewDecoder(resp.Body).Decode(&out)
fmt.Printf("%+v\n", out)
Java
String url = "https://www.resapi.cn/v1/holidays/countdown?from=2026-06-02&all=1";
HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> res = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(res.body());
PHP
<?php
$url = "https://www.resapi.cn/v1/holidays/countdown?from=2026-06-02&all=1";
$ctx = stream_context_create([
"http" => ["header" => "Accept: application/json\r\n"],
]);
$json = file_get_contents($url, false, $ctx);
print_r(json_decode($json, true));
C#
using System.Net.Http.Headers;
var client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
var json = await client.GetStringAsync("https://www.resapi.cn/v1/holidays/countdown?from=2026-06-02&all=1");
Console.WriteLine(json);
公历转农历
GET /v1/holidays/solar-to-lunar?date=2026-06-03
cURL
curl -s "https://www.resapi.cn/v1/holidays/solar-to-lunar?date=2026-06-03" \
-H "Accept: application/json"
JavaScript
const res = await fetch("https://www.resapi.cn/v1/holidays/solar-to-lunar?date=2026-06-03", {
headers: { Accept: "application/json" },
});
if (!res.ok) throw new Error(res.statusText);
console.log(await res.json());
Python
import requests
r = requests.get(
"https://www.resapi.cn/v1/holidays/solar-to-lunar",
params={"date": "2026-06-03"},
headers={"Accept": "application/json"},
timeout=30,
)
r.raise_for_status()
print(r.json())
Go
url := "https://www.resapi.cn/v1/holidays/solar-to-lunar?date=2026-06-03"
req, _ := http.NewRequest(http.MethodGet, url, nil)
req.Header.Set("Accept", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var out map[string]any
json.NewDecoder(resp.Body).Decode(&out)
fmt.Printf("%+v\n", out)
Java
String url = "https://www.resapi.cn/v1/holidays/solar-to-lunar?date=2026-06-03";
HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> res = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(res.body());
PHP
<?php
$url = "https://www.resapi.cn/v1/holidays/solar-to-lunar?date=2026-06-03";
$ctx = stream_context_create([
"http" => ["header" => "Accept: application/json\r\n"],
]);
$json = file_get_contents($url, false, $ctx);
print_r(json_decode($json, true));
C#
using System.Net.Http.Headers;
var client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
var json = await client.GetStringAsync("https://www.resapi.cn/v1/holidays/solar-to-lunar?date=2026-06-03");
Console.WriteLine(json);
农历转公历
GET /v1/holidays/lunar-to-solar?lunar_year=2026&lunar_month=4&lunar_day=18
cURL
curl -s "https://www.resapi.cn/v1/holidays/lunar-to-solar?lunar_year=2026&lunar_month=4&lunar_day=18" \
-H "Accept: application/json"
JavaScript
const res = await fetch(
"https://www.resapi.cn/v1/holidays/lunar-to-solar?lunar_year=2026&lunar_month=4&lunar_day=18",
{ headers: { Accept: "application/json" } },
);
if (!res.ok) throw new Error(res.statusText);
console.log(await res.json());
Python
import requests
r = requests.get(
"https://www.resapi.cn/v1/holidays/lunar-to-solar",
params={"lunar_year": 2026, "lunar_month": 4, "lunar_day": 18},
headers={"Accept": "application/json"},
timeout=30,
)
r.raise_for_status()
print(r.json())
Go
url := "https://www.resapi.cn/v1/holidays/lunar-to-solar?lunar_year=2026&lunar_month=4&lunar_day=18"
req, _ := http.NewRequest(http.MethodGet, url, nil)
req.Header.Set("Accept", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var out map[string]any
json.NewDecoder(resp.Body).Decode(&out)
fmt.Printf("%+v\n", out)
Java
String url = "https://www.resapi.cn/v1/holidays/lunar-to-solar?lunar_year=2026&lunar_month=4&lunar_day=18";
HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> res = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(res.body());
PHP
<?php
$url = "https://www.resapi.cn/v1/holidays/lunar-to-solar?lunar_year=2026&lunar_month=4&lunar_day=18";
$ctx = stream_context_create([
"http" => ["header" => "Accept: application/json\r\n"],
]);
$json = file_get_contents($url, false, $ctx);
print_r(json_decode($json, true));
C#
using System.Net.Http.Headers;
var client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
var json = await client.GetStringAsync(
"https://www.resapi.cn/v1/holidays/lunar-to-solar?lunar_year=2026&lunar_month=4&lunar_day=18");
Console.WriteLine(json);
农历 / 节气 / 生肖 / 星座
GET /v1/holidays/lunar?date=2026-06-03
cURL
curl -s "https://www.resapi.cn/v1/holidays/lunar?date=2026-06-03" \
-H "Accept: application/json"
JavaScript
const res = await fetch("https://www.resapi.cn/v1/holidays/lunar?date=2026-06-03", {
headers: { Accept: "application/json" },
});
if (!res.ok) throw new Error(res.statusText);
console.log(await res.json());
Python
import requests
r = requests.get(
"https://www.resapi.cn/v1/holidays/lunar",
params={"date": "2026-06-03"},
headers={"Accept": "application/json"},
timeout=30,
)
r.raise_for_status()
print(r.json())
Go
url := "https://www.resapi.cn/v1/holidays/lunar?date=2026-06-03"
req, _ := http.NewRequest(http.MethodGet, url, nil)
req.Header.Set("Accept", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var out map[string]any
json.NewDecoder(resp.Body).Decode(&out)
fmt.Printf("%+v\n", out)
Java
String url = "https://www.resapi.cn/v1/holidays/lunar?date=2026-06-03";
HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> res = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(res.body());
PHP
<?php
$url = "https://www.resapi.cn/v1/holidays/lunar?date=2026-06-03";
$ctx = stream_context_create([
"http" => ["header" => "Accept: application/json\r\n"],
]);
$json = file_get_contents($url, false, $ctx);
print_r(json_decode($json, true));
C#
using System.Net.Http.Headers;
var client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
var json = await client.GetStringAsync("https://www.resapi.cn/v1/holidays/lunar?date=2026-06-03");
Console.WriteLine(json);
年度二十四节气
GET /v1/holidays/terms?year=2026
cURL
curl -s "https://www.resapi.cn/v1/holidays/terms?year=2026" \
-H "Accept: application/json"
JavaScript
const res = await fetch("https://www.resapi.cn/v1/holidays/terms?year=2026", {
headers: { Accept: "application/json" },
});
if (!res.ok) throw new Error(res.statusText);
console.log(await res.json());
Python
import requests
r = requests.get(
"https://www.resapi.cn/v1/holidays/terms",
params={"year": 2026},
headers={"Accept": "application/json"},
timeout=30,
)
r.raise_for_status()
print(r.json())
Go
url := "https://www.resapi.cn/v1/holidays/terms?year=2026"
req, _ := http.NewRequest(http.MethodGet, url, nil)
req.Header.Set("Accept", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var out map[string]any
json.NewDecoder(resp.Body).Decode(&out)
fmt.Printf("%+v\n", out)
Java
String url = "https://www.resapi.cn/v1/holidays/terms?year=2026";
HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> res = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(res.body());
PHP
<?php
$url = "https://www.resapi.cn/v1/holidays/terms?year=2026";
$ctx = stream_context_create([
"http" => ["header" => "Accept: application/json\r\n"],
]);
$json = file_get_contents($url, false, $ctx);
print_r(json_decode($json, true));
C#
using System.Net.Http.Headers;
var client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
var json = await client.GetStringAsync("https://www.resapi.cn/v1/holidays/terms?year=2026");
Console.WriteLine(json);