国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

SpringBoot 免費輕量級智能工作日判定方案:融合多源數據的節假日解決方案

開發 前端
本文將深入探討 SpringBoot 如何構建高可靠、可擴展的工作日判定系統,解決法定節假日與調休帶來的復雜性問題。

前言

在金融交易、定時任務、報表生成、考勤系統等關鍵場景中,精準的工作日與節假日判定是系統核心基礎能力。

本文將深入探討 SpringBoot 如何構建高可靠、可擴展的工作日判定系統,解決法定節假日與調休帶來的復雜性問題。

一、免費開源類庫

holiday-cn 在 github 上有 1.6k star 的優秀類庫,實現自動每日抓取國務院公告獲取中國法定節假日數據,也支持提供在線數據獲取節假日數據。

  • 提供 JSON 格式節假日數據
  • CI 自動更新
  • 數據變化時自動發布新版本 ( Watch - Release only 以獲取郵件提醒! )
  • 提供 JSON 打包下載

1.1 數據格式

interface Holidays {
  /** 完整年份, 整數。*/
  year: number;
  /** 所用國務院文件網址列表 */
  papers: string[];
  days: {
    /** 節日名稱 */
    name: string;
    /** 日期, ISO 8601 格式 */
    date: string;
    /** 是否為休息日 */
    isOffDay: boolean;
  }[]
}

1.2 在線使用

提示:任何第三方服務都可能故障或停止服務,如果穩定性要求高請自己搭建靜態文件服務。

開源地址:https://github.com/NateScarlet/holiday-cn

二、免費第三方 API 集成

聚合數據與天行數據都提供了免費API接口獲取節假日數據。下面以聚合數據為例進行講解。

2.1 注冊

登錄官網進行注冊

https://www.juhe.cn/ 

2.2 API 申請

API 市場中找到“節假日信息查詢”,點擊進入,進行申請。

圖片圖片

2.3 AppKey 獲取

申請完后,在數據中心,我的API 中找到對應 API,復制 AppKey,同時支持接口在線測試。

圖片圖片

2.4 數據緩存本地

public class JuHeDateRefreshTask {


    // 節假日信息查詢接
    private static final String CALENDER_DAY_URL = "http://apis.juhe.cn/fapig/calendar/day?";
    private static final String CALENDER_DAY_URL_APP_KEY = "AppKey";
    
    private CalenderDayMapper calenderDayMapper;


    public JuHeDateRefreshTask(CalenderDayMapper calenderDayMapper) {
        this.calenderDayMapper = calenderDayMapper;
    }


    @Scheduled(cron = "0 30 1 * * ?")
    public void refresh() {
        Date now = new Date();
        String nowDay = DateUtil.formatDate(now);
        callCalenderDay(nowDay);
        for(int i = 1; i<35; i++){
            callCalenderDay(DateUtil.formatDate(DateUtil.offsetDay(now, i)));
        }
    }


    private void callCalenderDay(String date){
        CalenderDay calenderDay = calenderDayMapper.getOne("date", date);
        if(calenderDay == null){
            String param = "detail=1&key="+CALENDER_DAY_URL_APP_KEY+"&date="+date;
            String response = HttpUtil.get(CALENDER_DAY_URL + param);
            JSONObject jsonObject = JSONUtil.parseObj(response);
            if(jsonObject.getInt("error_code") == 0){
                JSONObject result = jsonObject.getJSONObject("result");
                if(result != null){
                    calenderDay = buildCalenderDay(result);
                    calenderDayMapper.insert(calenderDay);
                }
            }else {
                log.error("接口【"+CALENDER_DAY_URL + param+"】響應異常:"+jsonObject);
            }
        }
    }
    private CalenderDay buildCalenderDay(JSONObject result){
        CalenderDay calenderDay = new CalenderDay();
        calenderDay.setDate(result.getStr("date"));
        calenderDay.setYear(result.getStr("year"));
        calenderDay.setMonth(result.getStr("month"));
        calenderDay.setDay(result.getStr("day"));
        calenderDay.setCdStatus(result.getStr("status"));
        calenderDay.setWeek(result.getStr("week"));
        calenderDay.setCdStatusDesc(result.getStr("statusDesc"));
        calenderDay.setAnimal(result.getStr("animal"));
        calenderDay.setCnDay(result.getStr("cnDay"));
        calenderDay.setCdValue(result.getStr("value"));
        calenderDay.setCdDesc(result.getStr("desc"));
        calenderDay.setGzDate(result.getStr("gzDate"));
        calenderDay.setGzMonth(result.getStr("gzMonth"));
        calenderDay.setGzYear(result.getStr("gzYear"));
        calenderDay.setIsBigMonth(result.getStr("isBigMonth"));
        calenderDay.setIMonth(result.getStr("lMonth"));
        calenderDay.setIDate(result.getStr("lDate"));
        calenderDay.setLunarYear(result.getStr("lunarYear"));
        calenderDay.setLunarMonth(result.getStr("lunarMonth"));
        calenderDay.setLunarDate(result.getStr("lunarDate"));
        calenderDay.setSuit(result.getStr("suit"));
        calenderDay.setAvoid(result.getStr("avoid"));
        calenderDay.setTerm(result.getStr("term"));
        calenderDay.setOriginal(result.toString());
        return calenderDay;
    }
}

2.5. 相應結果

{
    "reason": "success",
    "result": {
        "date": "2025-10-03",
        "week": "星期五",
        "statusDesc": "節假日",
        "status": "1",
        "animal": "蛇",
        "avoid": "出行.栽種.納畜.安葬.行喪.伐木.造廟.造橋",
        "cnDay": "五",
        "day": "3",
        "gzDate": "乙巳",
        "gzMonth": "乙酉",
        "gzYear": "乙巳",
        "isBigMonth": "",
        "jiri": "1",
        "lDate": "十二",
        "lMonth": "八",
        "lunarDate": "12",
        "lunarMonth": "8",
        "lunarYear": "2025",
        "month": "10",
        "suit": "結婚.打掃.搬家.合婚訂婚.簽訂合同.交易.搬新房.開業.訂盟.祈福.安床.掛匾.祭祀.出火.收養子女.開光.求子",
        "term": "",
        "year": "2025"
    },
    "error_code": 0
}

三、總結

系統穩定性建議:工作日判定系統應采用降級策略——當外部API不可用時自動切換至本地最新緩存數據,確保核心業務不受影響。

責任編輯:武曉燕 來源: 小林聊編程
相關推薦

2025-07-15 10:15:46

2014-09-26 10:32:35

2022-08-11 08:35:40

Hanko開源

2015-11-18 16:52:29

多備份

2024-03-28 09:46:50

2016-10-14 16:35:39

2010-04-13 11:46:02

2021-03-17 08:11:21

SQL工作日數據

2022-11-02 17:52:22

紅帽物聯網邊緣計算

2022-04-30 07:53:54

Python腳本語言

2017-04-01 14:53:50

華為

2017-04-06 15:07:30

互聯網華為

2010-03-25 14:55:56

智能布線系統

2020-06-22 07:40:07

物聯網頭盔技術

2010-04-13 16:28:58

2022-03-27 21:52:52

數據分析運營市場

2018-01-19 17:23:00

華為

2013-06-07 13:37:55

華為云計算

2017-10-30 14:34:38

點贊
收藏

51CTO技術棧公眾號

国产又黄又大久久| 国产人成亚洲第一网站在线播放| 搞av.com| 欧美成人video| 伪装者在线观看完整版免费| 欧美日韩一区二区三区在线电影 | 国产精品麻豆欧美日韩ww| 欧美多人爱爱视频网站| 男同互操gay射视频在线看| 丁香激情视频| 宅男网站在线免费观看| 91tv亚洲精品香蕉国产一区| 97久久夜色精品国产| 麻豆精品国产传媒mv男同| 91精品国产自产在线观看永久∴| 天堂成人免费av电影一区| av毛片久久久久**hd| 国产精品美女www| 国产麻豆久久| 天天久久夜夜| 成人午夜视频网站| 亚洲国产91精品在线观看| 4438全国亚洲精品在线观看视频| 热久久这里只有精品| 国产经典视频一区| 欧美xxxx性| 精久久久久久| 香蕉加勒比综合久久 | 国产精品视频午夜| www 四虎| 精品999网站| 欧美电影三区| 久久蜜臀中文字幕| 看全色黄大色大片| 免费一级欧美在线观看视频| 亚洲国产成人精品一区二区| 1024在线播放| 欧美精品一二三区| 欧美拍拍视频| 亚洲欧洲精品天堂一级| 日韩少妇内射免费播放18禁裸乳| 久久久久久9| 91精品国产综合久久福利软件| 亚洲精品福利电影| 国产精品久久久久久久久免费相片 | 另类在线视频| 在线观看91久久久久久| 樱花草涩涩www在线播放| 欧美精品在线视频| 久久99精品久久久久久野外| 欧美日韩人人澡狠狠躁视频| 亚洲精品视频在线免费| 国产丝袜欧美中文另类| a视频免费看| 亚洲欧美日韩精品久久久久| 日韩视频免费在线播放| 99在线视频精品| 黄色漫画在线免费观看| 亚洲福利视频一区二区| 国产美女在线免费观看| 亚洲一区在线视频观看| 中文字幕在线中文字幕二区| 欧美视频中文字幕| 中文字幕伦理免费在线视频| 久久精品国产99国产精品| 大西瓜av在线| 久久久久88色偷偷免费| 男捅女免费视频| 欧美在线免费观看视频| 欧美野外wwwxxx| 欧美超级免费视 在线| 天堂av一区二区三区在线播放| 国产精品久久久久久久一区探花| 亚洲欧美文学| 国内精品国产三级国产99| 久久无码av三级| 精品视频在线一区二区| 久久九九国产精品怡红院 | 精品国产一区二区三区噜噜噜 | 国产精品调教视频| 91久久久久久久久| 26uuu国产电影一区二区| 日本在线视频1区| 精品少妇一区二区30p| 欧美亚洲一区| 中文字幕在线网| 欧美一级二级三级蜜桃| 国产探花在线精品一区二区| 欧美一区二区三区在线播放| 亚洲图片有声小说| 国产精品一区二区美女视频免费看| 好吊色欧美一区二区三区| 91首页免费视频| 黄网站在线免费看| 国产精品日本精品| 国产色综合一区| 国产综合色激情| 亚洲伊人婷婷| 欧美视频三区在线播放| 日韩电影不卡一区| 老熟妇仑乱视频一区二区| 亚洲国产精品va在看黑人| 国产色视频在线播放| 精品国内产的精品视频在线观看| 日本欧美大码aⅴ在线播放| 亚洲s色大片| 99热国产免费| 一区二区三区中文字幕电影| 日韩欧美中文字幕在线视频 | 中文字幕在线永久在线视频| 亚洲欧美一区二区三区四区| 精久久久久久久久久久| 黄a在线观看| 国产麻豆乱码精品一区二区三区| 婷婷国产在线综合| 亚洲国内欧美| 久草影视在线| 国产精品二区三区| 日韩欧美国产一区在线观看| 亚洲欧美视频| 女人高潮被爽到呻吟在线观看| 亚洲一区二区在| 精品国产欧美一区二区三区成人| 另类小说一区二区三区| 欧美极品影院| 亚洲一级免费在线观看| 成人xxxx视频| 亚洲激情在线观看视频免费| 91在线国产福利| 三级小说欧洲区亚洲区| 国产精品一级伦理| 日韩欧美视频免费在线观看| 久久久久久久一区二区三区| 亚洲精品亚洲人成人网在线播放| 国产在线看一区| 奇米影视一区二区三区| 国产一区二区不卡老阿姨| 精品一二三四在线| 精品一区二区三区在线播放视频 | 91国产一区在线| 精品国产一区av| 欧美高清在线观看| 97精品国产97久久久久久| 欧美高清无遮挡| 国产精品91视频| 亚洲在线第一页| 国产丝袜不卡| 日韩久久不卡| 97中文字幕在线| 欧美不卡福利| 高清一区二区三区视频| 国产精品视频永久免费播放 | 综合网插菊花| av片中文字幕| 成人性生生活性生交12| 亚洲综合色在线观看| 国产九色porn网址| 免费在线视频你懂得| 18网站在线观看| 电影一区二区| 欧美人体视频| 国产日韩一区| 激情小说亚洲一区| 久久综合国产精品| 欧美日韩国产黄| 亚洲欧洲中文天堂| 国产精品高潮在线| 亚洲ai欧洲av| 日本调教视频在线观看| 免费高清在线观看| 香蕉成人app| 久久一区视频| 一二三四区精品视频| 亚洲国产精品推荐| 国产精品视频色| 丝袜一区二区三区| xxxx欧美18另类的高清| 日韩精品极品视频| 国产精品理论在线观看| 99re66热这里只有精品3直播| 亚洲国产精品成人| 成人香蕉视频| 老头吃奶性行交视频| 欧美专区在线观看| 日韩欧美在线不卡| 福利微拍一区二区| 亚洲精品国产无套在线观| 夜夜嗨av一区二区三区四季av| 手机精品视频在线观看| 永久免费精品视频| 欧美高潮视频| 美女黄色片视频| 黄色片视频在线播放| caopor在线视频| gay欧美网站| 欧美午夜视频| 欧美性xxxxxx| 成人一区二区电影| 国产福利精品在线| 欧洲在线视频一区|