节假日项目

该项目是一个小型Java应用,利用百度万年历API计算和存储中国的节假日信息,包括法定节假日和周末。它提供查询特定年份节假日、判断是否为工作日、计算工作日间隔等接口,并在每年12月自动更新下一年的节假日数据。项目采用模拟数据库DateDb存储数据,无实际数据库配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目背景简介

假期的计算向来是个难题,因为除了一般的周六周日以外,还存在着每年都会变化的法定节假日,即每年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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值