代码编织梦想

项目背景简介

假期的计算向来是个难题,因为除了一般的周六周日以外,还存在着每年都会变化的法定节假日,即每年12月份,国务院发布的下一年的放假安排。

工作中有业务涉及这一块儿,于是抽取了一点时间,把项目中关于节假日计算的内容抽取成一个单独的项目,发表在gitee上面,地址是: https://gitee.com/jzd-cj/holiday.git

项目的思路是,通过开放的API(本文使用的是百度万年历),计算出每年的节假日(包含法定节假日和普通的周六周日),进而可以提供一些查询能力,诸如:**“2023年1月有哪些天放假?” “2023-05-23日是否是工作日?”“2023-09-10延后23个工作是哪天?”“2023年4月1日到2023年6月13日之间有多少天工作日?”**等。

另外,系统还运行了定时任务,每年12月份自动计算下一年的节假日。

提醒一下,本项目仅适配于中国 CN,并不适用于其他国家。

项目介绍

迷你节假日项目,小型项目,所以连数据库都懒得配置,写了一个 DateDb 模拟数据库,DateDb内配置了一个 static list 模拟业务表存储节假日信息。实际上就是一两千个日期对象,占用空间非常的小。

软件架构

本项目所使用的互联网接口是百度的万年历,具体是位于 baiduapi 包中,该包是没有对其他包的依赖,可以单独抽出去运行。

因为小型项目,所以连数据库都懒得配置,写了一个 com.opensource.holiday.core.DateDb 模拟数据库,DateDb内配置了一个 static list【FULL_INFO_DATE_DB】 作为业务表存储节假日信息。

项目启动时,com.opensource.holiday.core.MyApplicationRunner 会自动执行 run() 内的方法,会自动将2020年至今年的所有节假日信息(包括法定节假日和普通周末)存入DateDb中。

注意:由于国务院每年发布下一年的法定假日,所以有个定时任务,每年12月20日计算下一年的所有节假日(包括法定节假日和普通周末),因此理论上,服务是永久有效的(除非百度API关了)。

使用说明

提供了以下几个接口
查看DateDb里的所有的节假日信息(2020年至今年)
ip:port/holiday/listAll

返回对应年份的所有节假日记录
ip:port/holiday/listByYear?year=2023

检查对应年份的记录是否存在
ip:port/holiday/checkYearExist?year=2023

检查 dateStr 对应的日期是否是工作日
ip:port/holiday/checkIfWorkday?dateStr=2023-01-30

获取 dateStr 后若干个工作日日期
ip:port/holiday/getDelayedWorkday?dateStr=2023-01-30&delay=10

计算两个日期中间隔着多少工作日
ip:port/holiday/countWorkdayBetweenTwoDate?startDate=2023-01-30&endDate=2023-05-06

参与贡献

  1. 百度的万年历
  2. 工具方法 https://blog.csdn.net/swag_gemmar/article/details/120706005
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/jiang561314/article/details/128858798

如何获取节假日的方法_奋斗鱼的博客-爱代码爱编程_获取法定节假日

如何获取节假日的方法 因项目功能要求,需要计算工作日间隔天数,所以必须查询出节假日。 在网上搜索了一番,终于找到一个可以直接调用的API。返回的类型为JSON字符串,适合所有项目调用。 节假日API 网站 http:/

生成今年所有节假日_簡丶的博客-爱代码爱编程

因为项目开发考勤系统,需要用到今年的所有节假日,在找到根据年返回当年所有的节假日日期的调用接口, 对接口返回数据进行处理得到 yyyy-MM-dd 日期格式,并存入数据库。 处理代码为: public class Ho

免费好用的判定节假日api来了_即客星球的博客-爱代码爱编程

http://lanfly.vicp.io/api/holiday 使用须知 这是由本人利用业余时间开发的节假日API。在自己的兴趣爱好项目中使用,并免费提供给同样需要的人。节假日每年我都会尽快更新。如果发现某个节假日配

java节假日算法_「国家法定节假日」java 国家法定节假日和双休日判断工具类 - seo实验室...-爱代码爱编程

国家法定节假日 package com.newland.dateutil; import java.text.ParseException; import java.text.simpledateformat; import java.util.Arrays; import java.util.calendar; import java.u

php根据当前日期判断法定节假日_判断日期是否为法定节假日的API接口与示例函数...-爱代码爱编程

需要判定某日期是否为法定节假日,由于国家的节假日每年都在变动,所以使用接口判定是必要的。可惜的是,这样的接口并不多,在此汇总三个: 前两个看起来是个人的,最后一个是聚合数据的万年历接口。 请注意,本文中代码谨慎使用。发现前两个个人接口经常改动,第一个接口2019年8月突然改动造成函数失效。本文不再维护,仅供参考。 在我的小项目中使用了前两个。感觉

js获取传统节假日_js 两个时间之间工作日的计算问题(包含节假日)-爱代码爱编程

后端用vue写点前端代码,也是罪过。。。嗷嗷嗷  行吧 项目需求描述:需要对时间控件里面的两个时间计算出相隔多少个工作日(包含节假日),由于节假日每年都不确定。保证项目能够正常使用,录用了2018年和2019年的所有节假日期(暂时只能使用笨办法了)。如图,看大致效果: 这里实际业务需要,申请收到时间答复时间必须相差15个工作日以内,提示正常。如果超

android节日接口,节假日api及其整合-爱代码爱编程

节假日api 今天项目中有一个需求需要用到节假日,项目需求是 要有调休日 要有周末 于是就去网上找。 看到比较合适的大概就这几个: 1.http://tool.bitefu.net/jiari?d=2018 返回数据: 返回结果: { "2018": { "1001": "2", "1002": "2", "1003": "2

最简单判断工作日/节假日API-爱代码爱编程

      由于开发的系统需要根据工作日和节假日来进行逻辑判断,所以这里研究了下方案: 1. 自己维护一份日历表,把每天的日期类型标注清楚        之前的一家公司就是这样解决的,需要每年去手动更新。如果公司规模比较大,对数据稳定性要求较高,建议选择这种方式。切记不要为了偷懒而因小失大! 2. 在线API实时获取        嘿嘿,我现在就是

e9:新版考勤,外网公共节假日导入内网模板sql-爱代码爱编程

新版考勤:外网公共节假日导入内网模板SQL select * from KQ_HolidaySet --节假日 select * from kq_group --考勤组 --changeType --1-公众假日

spring boot获取节假日api-爱代码爱编程

项目场景: 需要知道某一天是不是节假日,或者是休息日。 问题描述 我们知道每年的假节日要等国家规定好,我们才能知道,所以自己是算不出的。 马上想到的两个解决方法: 1.通过调用互联网的节假日API(优点:方便,缺点:主动权在别人手里,万一别人的服务器出了问题,自己的服务也会受影响) 2.每年自己手动配置一次(优点:安全不会出问题,缺点:麻烦

linux网络:传输层之udp&tcp协议-爱代码爱编程

文章目录 一、端口号1.端口号范围划分2.常用命令 二、UDP 协议1.格式2.特点3. UDP 的缓冲区4. UDP 使用注意事项5.基于 UDP 的应用层协议 三、TCP 协议1.格式2.确认应