百度万年历接口实现和分析

百度万年历接口实现和分析

接口目的

项目中需要判断某个日期是否是节假日,以此对应不同的业务处理和设置。查看了下百度搜索的结果,最终最中意的还是它自带的万年历组件。
其中数据查询的url 是 http://opendata.baidu.com/api.php?query=YEAR_MONTH&resource_id=6018&format=json

封装方法 解析数据

服务:

private String BAIDU_URL = "http://opendata.baidu.com/api.php?query=YEAR_MONTH&resource_id=6018&format=json";

 /**
     * 获取对应时间附近的假日信息
     * @param year_month 2019年9月
     * @return
     */
    public void queryHolidays(String year_month){

        String url = BAIDU_URL.replace("YEAR_MONTH",year_month);
        SimpleDateFormat format = new SimpleDateFormat("yyyy-M-d");
        SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
        try {
            JSONObject result = JSONObject.parseObject(httpClientUtils.get(url, null));
            if(result.getString("status").equalsIgnoreCase("0")){
                JSONArray data = result.getJSONArray("data");
                if(!CollectionUtils.isEmpty(data)){
                    JSONObject item = data.getJSONObject(0);
                    if(item == null || item.get("holiday") == null){
                        return;
                    }
                    JSONArray holiday = item.getJSONArray("holiday");
                    if(!CollectionUtils.isEmpty(holiday)){
                        for(int i = 0 ; i < holiday.size(); i ++){
                            JSONObject h = holiday.getJSONObject(i);
                            JSONArray hh = h.getJSONArray("list");
                            if(!CollectionUtils.isEmpty(hh)){
                                for(int j = 0; j < hh.size(); j++){
                                    JSONObject hhh = hh.getJSONObject(j);
                                    String dateStr = hhh.getString("date");
                                    dateStr = format1.format(format.parse(dateStr));
                                    Holiday holidayExist = systemParaDao.getHolidayByDate(dateStr);
                                    if(holidayExist != null){
                                        continue;
                                    }

                                    Holiday holiday1 = new Holiday();
                                    holiday1.setDateStr(dateStr);
                                    holiday1.setWorkSate(Integer.valueOf(hhh.getString("status")));
                                    holiday1.setState(1);

                                    systemParaDao.saveHoliday(holiday1);
                                }
                            }
                        }
                    }
                }
            }
        }catch (Exception ex){
            ex.printStackTrace();
        }
    }

返回的数据结构:

{
    "status": "0",
    "t": "",
    "set_cache_time": "",
    "data": [
        {
            "StdStg": 6018,
            "StdStl": 8,
            "_update_time": "1556113527",
            "cambrian_appid": "0",
            "almanac": [
                {
                    "avoid": "入殓.安葬.开市.交易.",
                    "date": "2019-10-1",
                    "suit": "祭祀.诸事不宜."
                },
                {
                    "avoid": "安床.开光.开市.交易.",
                    "date": "2019-10-2",
                    "suit": "祭祀.裁衣.冠笄.嫁娶.安机械.拆卸.动土.起基.移徙.入宅.入殓.启攒.安葬.造仓.经络."
                },
                {
                    "avoid": "动土.冠笄.移徙.入宅.开市.竖柱.上梁.",
                    "date": "2019-10-3",
                    "suit": "祭祀.出行.成服.除服.沐浴.入殓."
                },
                {
                    "avoid": "诸事不宜.",
                    "date": "2019-10-4",
                    "suit": "祭祀.沐浴.赴任.出行.余事勿取."
                },
                {
                    "avoid": "诸事不宜.",
                    "date": "2019-10-5",
                    "suit": "诸事不宜."
                },
                {
                    "avoid": "嫁娶.移徙.入宅.开市.",
                    "date": "2019-10-6",
                    "suit": "沐浴.入殓.移柩.除服.成服.破土.平治道涂."
                },
                {
                    "avoid": "",
                    "date": "2019-10-7",
                    "suit": "嫁娶.祭祀.祈福.求嗣.沐浴.出火.出行.拆卸.修造.动土.进人口.开市.交易.立券.入宅.移徙.安床.栽种.纳畜.入殓.安葬.启攒.除服.成服."
                },
                {
                    "avoid": "开市.交易.祭祀.入宅.安葬.",
                    "date": "2019-10-8",
                    "suit": "捕捉.畋猎.余事勿取."
                },
                {
                    "avoid": "开市.破土.掘井.合寿木.",
                    "date": "2019-10-9",
                    "suit": "嫁娶.纳采.订盟.祭祀.祈福.求嗣.斋醮.开光.安香.出火.造庙.移徙.出行.入宅.造庙.起基.竖柱.上梁.安床.纳畜.捕捉.纳婿.安葬."
                },
                {
                    "avoid": "开市.嫁娶.",
                    "date": "2019-10-10",
                    "suit": "祭祀.沐浴.解除.破屋.坏垣.余事勿取."
                },
                {
                    "avoid": "嫁娶.开市.入宅.祈福.安葬.",
                    "date": "2019-10-11",
                    "suit": "订盟.纳采.会亲友.交易.立券.纳财.栽种.纳畜.牧养."
                },
                {
                    "avoid": "上梁.开光.造屋.架马.合寿木.",
                    "date": "2019-10-12",
                    "suit": "造车器.嫁娶.订盟.纳采.会亲友.祭祀.出行.开市.立券.移徙.入宅.破土.安葬."
                },
                {
                    "avoid": "动土.破土.开市.安葬.",
                    "date": "2019-10-13",
                    "suit": "祭祀.作灶.纳财.捕捉.畋猎.余事勿取."
                },
                {
                    "avoid": "开市.开仓.出货财.安床.安门.安葬.",
                    "date": "2019-10-14",
                    "suit": "嫁娶.订盟.纳采.祭祀.祈福.出行.求医.治病.出火.移徙.入宅."
                },
                {
                    "avoid": "开光.嫁娶.会亲友.栽种.针灸.安葬.",
                    "date": "2019-10-15",
                    "suit": "冠笄.祭祀.沐浴.作灶.理发.整手足甲.扫舍.补垣.塞穴.入殓.破土.启攒."
                },
                {
                    "avoid": "造庙.造船.动土.破土.安葬.",
                    "date": "2019-10-16",
                    "suit": "纳采.订盟.嫁娶.祭祀.祈福.求嗣.置产.求医.治病.开市.交易.立券.会亲友.移徙.竖柱.上梁.造屋.合脊.安门.放水.捕捉.纳畜."
                },
                {
                    "avoid": "嫁娶.动土.破土.修坟.",
                    "date": "2019-10-17",
                    "suit": "出行.造车器.造畜椆栖.解除.冠笄.裁衣.作梁.雕刻.会亲友.移徙.入宅.安机械.造畜椆栖.开市.扫舍."
                },
                {
                    "avoid": "移徙.入宅.出行.祈福.嫁娶.",
                    "date": "2019-10-18",
                    "suit": "沐浴.理发.冠笄.安床.开市.立券.会亲友.交易.纳财.结网.教牛马."
                },
                {
                    "avoid": "嫁娶.开市.安床.掘井.",
                    "date": "2019-10-19",
                    "suit": "祭祀.造畜椆栖.修饰垣墙.平治道涂.余事勿取."
                },
                {
                    "avoid": "嫁娶.祭祀.入宅.造屋.移徙.",
                    "date": "2019-10-20",
                    "suit": "捕捉.结网.入殓.除服.成服.移柩.破土.安葬.启攒.立碑."
                },
                {
                    "avoid": "开光.嫁娶.掘井.伐木.作梁.",
                    "date": "2019-10-21",
                    "suit": "祭祀.祈福.求嗣.斋醮.造庙.出火.安机械.会亲友.开市.交易.立券.纳财.习艺.经络.求医.治病.开池.作厕.畋猎.结网.栽种.牧养.安葬.破土.启攒."
                },
                {
                    "avoid": "诸事不宜.",
                    "date": "2019-10-22",
                    "suit": "破屋.坏垣.余事勿取."
                },
                {
                    "avoid": "出行.祈福.安葬.作灶.",
                    "date": "2019-10-23",
                    "suit": "会亲友.嫁娶.订盟.纳采.纳婿.拆卸.修造.动土.起基.竖柱.上梁.安床.会亲友.纳财."
                },
                {
                    "avoid": "开仓.冠笄.伐木.作梁.",
                    "date": "2019-10-24",
                    "suit": "祭祀.塑绘.开光.祈福.斋醮.出行.订盟.纳采.裁衣.嫁娶.拆卸.修造.安床.入宅.安香.入殓.启攒.安葬.谢土.赴任.会亲友.进人口.出行.移徙.上梁.经络.开市.交易.立券.纳财."
                },
                {
                    "avoid": "栽种.动土.安葬.开市.",
                    "date": "2019-10-25",
                    "suit": "祭祀.作灶.入殓.除服.成服.畋猎."
                },
                {
                    "avoid": "作灶.入殓.安葬.安床.",
                    "date": "2019-10-26",
                    "suit": "祭祀.祈福.斋醮.沐浴.竖柱.订盟.纳采.嫁娶.拆卸.入宅.移柩.启攒.谢土.赴任.出火.纳畜."
                },
                {
                    "avoid": "动土.上梁.",
                    "date": "2019-10-27",
                    "suit": "嫁娶.祭祀.安机械.入殓.破土.安葬."
                },
                {
                    "avoid": "行丧.安葬.",
                    "date": "2019-10-28",
                    "suit": "作灶.造畜椆栖."
                },
                {
                    "avoid": "嫁娶.入宅.",
                    "date": "2019-10-29",
                    "suit": "沐浴.理发.入学.习艺.进人口."
                },
                {
                    "avoid": "开市.动土.破土.",
                    "date": "2019-10-30",
                    "suit": "开光.针灸.会亲友.启攒.安葬."
                },
                {
                    "avoid": "余事勿取.",
                    "date": "2019-10-31",
                    "suit": "祭祀.结网.造畜椆栖.余事勿取."
                }
            ],
            "holiday": [
                {
                    "desc": "9月13日放假,与周末连休。",
                    "festival": "2019-9-13",
                    "list": [
                        {
                            "date": "2019-9-13",
                            "status": "1"
                        },
                        {
                            "date": "2019-9-14",
                            "status": "1"
                        },
                        {
                            "date": "2019-9-15",
                            "status": "1"
                        }
                    ],
                    "list#num#baidu": 3,
                    "name": "中秋节",
                    "rest": "拼假建议:2019年9月9日(周一)~2019年9月12日(周四)请假4天,可拼9天中秋节小长假。"
                },
                {
                    "desc": "10月1日至10月7日放假,9月29日(星期日)、10月12日(星期六)上班。",
                    "festival": "2019-10-1",
                    "list": [
                        {
                            "date": "2019-10-1",
                            "status": "1"
                        },
                        {
                            "date": "2019-9-29",
                            "status": "2"
                        },
                        {
                            "date": "2019-10-2",
                            "status": "1"
                        },
                        {
                            "date": "2019-10-3",
                            "status": "1"
                        },
                        {
                            "date": "2019-10-4",
                            "status": "1"
                        },
                        {
                            "date": "2019-10-7",
                            "status": "1"
                        },
                        {
                            "date": "2019-10-12",
                            "status": "2"
                        },
                        {
                            "date": "2019-10-5",
                            "status": "1"
                        },
                        {
                            "date": "2019-10-6",
                            "status": "1"
                        }
                    ],
                    "list#num#baidu": 9,
                    "name": "国庆节",
                    "rest": "拼假建议:10月8日(周二)~10月12日(周六)请5天假,可拼13天国庆节小长假。"
                }
            ],
            "holidaylist": [
                {
                    "name": "元旦",
                    "startday": "2019-1-1"
                },
                {
                    "name": "除夕",
                    "startday": "2019-2-4"
                },
                {
                    "name": "春节",
                    "startday": "2019-2-4"
                },
                {
                    "name": "清明节",
                    "startday": "2019-4-5"
                },
                {
                    "name": "劳动节",
                    "startday": "2019-5-1"
                },
                {
                    "name": "端午节",
                    "startday": "2019-6-7"
                },
                {
                    "name": "中秋节",
                    "startday": "2019-9-13"
                },
                {
                    "name": "国庆节",
                    "startday": "2019-10-1"
                }
            ],
            "key": "2019年10月",
            "selectday": "2019-10-1",
            "url": "http://nourl.baidu.com/6018",
            "loc": "http://open.baidu.com/q?r=2002753&k=2019%E5%B9%B410%E6%9C%88",
            "SiteId": 2002753,
            "_version": 2540,
            "_select_time": 1556113509,
            "clicklimit": "1-3",
            "ExtendedLocation": "",
            "OriginQuery": "2019年10月",
            "tplt": "calendar_new",
            "resourceid": "6018",
            "fetchkey": "6018_2019年10月",
            "appinfo": "",
            "role_id": 10,
            "disp_type": 0
        }
    ]
}

PS:其中holiday中存放节假日信息,包括了补班信息,根据status字段区分(1.放假 2.补班)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值