🔍 在线测试
// 结果将显示在这里
📖 API 使用说明
接口地址
GET /api/lunar
请求参数说明
| 参数名 | 说明 | 是否必填 | 示例 |
|---|---|---|---|
| date |
日期字符串,格式根据转换类型不同而不同:
|
是 |
2024-03-20 2024-01-01-0 today |
| type |
转换类型:
|
否 | 默认:solar2lunar |
| timezone |
时区设置(仅在 date=today 时有效):
|
否 | 默认:8 (北京时间) |
调用示例
1. 获取今天的农历(指定时区)
支持的时区示例:
timezone=8- 北京时间 (UTC+8)timezone=-5- 纽约时间 (UTC-5)timezone=0- 格林威治时间 (UTC)timezone=1- 欧洲中部时间 (UTC+1)
返回数据:
{
"code": 200,
"data": {
"lunarYear": 2024, // 农历年
"lunarMonth": 2, // 农历月
"lunarDay": 10, // 农历日
"lunarMonthName": "二月", // 农历月份(如:正月、二月、闰二月)
"lunarDayName": "初十", // 农历日期(如:初一、十五、廿九)
"zodiac": "龙", // 生肖
"yearInGanZhi": "甲辰", // 年份天干地支
"monthInGanZhi": "庚寅", // 月份天干地支
"dayInGanZhi": "丙寅", // 日期天干地支
"festival": ["春分"], // 节日(包括农历节日和公历节日)
"isLeap": false, // 是否闰月
"weekDay": "星期三", // 星期几
"solar": { // 公历日期信息
"year": 2024,
"month": 3,
"day": 20,
"date": "2024-03-20"
}
}
}
2. 公历转农历
返回数据:
{
"code": 200,
"data": {
"lunarYear": 2024, // 农历年
"lunarMonth": 2, // 农历月
"lunarDay": 10, // 农历日
"lunarMonthName": "二月", // 农历月份(如:正月、二月、闰二月)
"lunarDayName": "初十", // 农历日期(如:初一、十五、廿九)
"zodiac": "龙", // 生肖
"yearInGanZhi": "甲辰", // 年份天干地支
"monthInGanZhi": "庚寅", // 月份天干地支
"dayInGanZhi": "丙寅", // 日期天干地支
"festival": ["春分"], // 节日(包括农历节日和公历节日)
"isLeap": false, // 是否闰月
"weekDay": "星期三", // 星期几
"solar": { // 公历日期信息
"year": 2024,
"month": 3,
"day": 20,
"date": "2024-03-20"
}
}
}
3. 农历转公历
返回数据:
{
"code": 200,
"data": {
"solarYear": 2024, // 公历年
"solarMonth": 3, // 公历月
"solarDay": 20, // 公历日
"solarFestival": [], // 公历节日
"weekDay": "星期三", // 星期几
"date": "2024-03-20" // 格式化的日期字符串
}
}
错误响应
当发生错误时,API 会返回以下格式的数据:
{
"code": 400, // 错误码:400表示请求参数错误,500表示服务器错误
"error": "错误信息" // 具体的错误说明
}
使用限制
- 支持的年份范围:1900-2100
- 每个IP每分钟最多请求60次
- 仅支持 GET 请求
常见使用场景
1. 获取今日农历
如果你想在你的网站或应用中显示今天的农历日期,可以使用以下代码:
JavaScript 示例代码:
// 获取今天的农历日期
async function getTodayLunar() {
try {
// 调用API
const response = await fetch(`https://lunarapi.vercel.app/api/lunar?date=today`);
const data = await response.json();
if (data.code === 200) {
// 示例显���农历日期
console.log(
`今天是农历 ${data.data.lunarYear}年`
+ `${data.data.lunarMonthName}`
+ `${data.data.lunarDayName}`
+ `,${data.data.zodiac}年`
+ `,${data.data.weekDay}`
);
// 如果有节日则显示
if (data.data.festival.length > 0) {
console.log(`今天是: ${data.data.festival.join('、')}`);
}
}
} catch (error) {
console.error('获取农历日期失败:', error);
}
}
// 立即执行一次
getTodayLunar();
// 如果需要每天自动更新,可以这样写:
// 设置在每天凌晨 00:00:01 更新
function scheduleNextUpdate() {
const now = new Date();
const tomorrow = new Date(now);
tomorrow.setDate(tomorrow.getDate() + 1);
tomorrow.setHours(0, 0, 1, 0);
const timeUntilNextUpdate = tomorrow - now;
setTimeout(() => {
getTodayLunar();
scheduleNextUpdate(); // 设置下一次更新
}, timeUntilNextUpdate);
}
// 启动定时更新
scheduleNextUpdate();
运行效果示例:
// 结果将显示在这里