农历计算,百度的计算比较准确,包括黄历禁忌计算都比较准确,而其他的一些网站,你可以对比下,基本上农历要是能准确就算不错了,一般是闰月就有问题,年头年尾也有问题。
一般是JS实现的,很少有Java版本的,我观摩了网上N多Java版本的,基本都有问题,所以下定决心,翻译了一下Javascript成Java,故得出这个接口。
现在,我们网站采用微服务的方式提供出来,响应效率高,可以达到不限制次数。关键是免费的,而且提供JSON方式返回。
接口返回的数据很全面,如:农历
、黄历
、禁忌
、星期
、生肖
、当月的节气
、是否闰月
、是不是大月
等,具体自己体会。
参数说明:格式为yyyy-MM-dd
,可以不传参,默认为当天,Get请求即可。
农历查询 演示
我测试一下请求当天农历查询,链接为:http://www.sojson.com/open/api/lunar/json.shtml
返回成功状态为:200
,失败为500
。
农历查询 JSON返回方式(成功)
{
"status": 200,//成功状态
"message": "success",//成功
"data": {
"year": 2017,//当前传参公历年
"month": 2,//当前传参公历月
"day": 2,//当前传参的公历日
"lunarYear": 2017,//数字农历年
"lunarMonth": 1,//数字农历月
"lunarDay": 6,//数字农历号
"cnyear": "贰零壹柒 ",//农历中文表示年
"cnmonth": "正",//农历中文表示月
"cnday": "初六",//农历中文表示天
"hyear": "丁酉",//年
"cyclicalYear": "丙申",//甲子年
"cyclicalMonth": "辛丑",//甲子月
"cyclicalDay": "庚申",//甲子日
"suit": "纳采,订盟,祭祀,求嗣,出火,塑绘,裁衣,会亲友,入学,拆卸,扫舍,造仓,挂匾,掘井,开池,结网,栽种,纳畜,破土,修坟,立碑,安葬,入殓",//宜
"taboo": "祈福,嫁娶,造庙,安床,谢土",//禁忌
"animal": "鸡", //生肖
"week": "星期四",//星期
"festivalList": [],//当天节日
"jieqi": {//当月节气
"4": "立春",//4日立春
"19": "雨水"//19日雨水
},
"maxDayInMonth": 29,//农历月当前月天数
"leap": false,//是否是闰月
"bigMonth": false,//是否是大月
"lunarYearString": "丁酉"//农历年
}
}
农历查询 JSON返回方式(失败)
失败情况下一般是参数问题,参数不识别,没有按规则走,格式为yyyy-MM-dd,如2017-02-02。
{
"status": 500,
"message": "日期格式错误,期望的格式为 yyyy-MM-dd ."
}
农历查询 JSON返回方式,指定日期
我测试一下请求当天农历查询,链接为:http://www.sojson.com/open/api/lunar/json.shtml?date=2017-05-27
,参数可以2017-5-27
也可以
请求成功结果,错误信息参照上面。
{
"status": 200,//成功状态
"message": "success",//成功
"data": {
"year": 2017,//当前传参公历年
"month": 5,//当前传参公历月
"day": 27,//当前传参的公历日
"lunarYear": 2017,//数字农历年
"lunarMonth": 5,//数字农历月
"lunarDay": 2,//数字农历月
"cnyear": "贰零壹柒 ",//农历中文表示年
"cnmonth": "五",//农历中文表示月
"cnday": "初二",//农历中文表示天
"hyear": "丁酉",//年
"cyclicalYear": "丁酉",//甲子年
"cyclicalMonth": "乙巳",//甲子月
"cyclicalDay": "甲寅",//甲子日
"suit": "栽种,捕捉,畋猎,馀事勿取",//宜
"taboo": "开市,动土,祭祀,斋醮,安葬,探病",//禁忌
"animal": "鸡",//生肖
"week": "星期六",//星期
"festivalList": [],//当天节日
"jieqi": {//当月节气
"5": "立夏",//5日立夏
"21": "小满"//21日小满
},
"maxDayInMonth": 29,//农历月当前月天数
"leap": false,//是否是闰月
"lunarYearString": "丁酉",//是否是大月
"bigMonth": false//农历年
}
}
注:点我查看原网页。