节假日提醒,节假日任务,节假日判断如何做?这篇文章教会你!

tool   holiday   openapi  
发布于 Oct 11, 2024

你是否有这样的需求,有一个任务需要在大家都休息的时候处理,你肯定会想到周六周日了,那不好意思,遇到调休怎么办呢?遇到国假怎么办呢?我这里所说的节假日和工作日不仅仅指正常的周一至周日,还包括国家法定假日和调休日,即 工作日休息和周末上班

如上图所示,其实,总结下来,我们只需要关注 2 类日子即可:

  1. 周六周日需要调休(上班)的日子,如上图的 14 和 29
  2. 周一至周五需要休息的日子,如上图的 16,17,1-4

那这个日子一般在哪里知道呢?某度搜了一下“节假日api”,还是找到几个的,至于能不能用,是否准确,SLA可用度如何,还有待进一步考察,继续往下看,我们尽可能让问题能可靠的解决。

手动维护

其实,我们手动维护也是可以的,就是得有人手人力来关注国家发布的假日安排计划,这个假日安排在哪里呢?每个节日来临前肯定会收到各种推送的,另外一个比较全的是政府每年发布的调休计划表,如 23 年底发布的:

https://www.gov.cn/zhengce/content/202310/content_6911527.htm

这个公告其实前一年的 10 月份大概就会发出来,这个内容是比较权威的吧,一般不会改(特殊情况也会有的,不用考虑),但是这个内容不太容易给一般的程序使用,不太好解析,当然我们人为看还是可以看明白的,手动维护一下每年的特殊节假日及调休表即可(正常的工作日和周末不需要处理)。

可以设计一张只有 2 个字段就够的表来存储它们:

  • day, 日期,如 20241001
  • status, 状态,如 1 表示工作日需要休息,2 表示周末需要上班

放心,不会太多,每年也就 30 条数据而已,如我之前做的手动维护的。

手动当然是 OK 的,但是万一忘记了咋办呢?定闹铃?每天发提醒?反正想办法让自己别忘了就行。

那万一离职了呢?别人忘记了呢?总归手动的不太靠谱哟!

AI 解析

国家发布的内容虽说比较好理解,但是程序不太好解析,不过在当下 AI 时代,丢给 AI 就可以了,我试了一下, kimi 解析的没问题。

kimi 的回答:

根据您提供的内容,以下是2024年的放假日期和调休日期的梳理:

元旦:
2024-01-01: 放假

春节:
2024-02-10: 放假
2024-02-11: 放假
2024-02-12: 放假
2024-02-13: 放假
2024-02-14: 放假
2024-02-15: 放假
2024-02-16: 放假
2024-02-17: 放假
2024-02-04: 调休
2024-02-18: 调休

清明节:
2024-04-04: 放假
2024-04-05: 放假
2024-04-06: 放假
2024-04-07: 调休

劳动节:
2024-05-01: 放假
2024-05-02: 放假
2024-05-03: 放假
2024-05-04: 放假
2024-05-05: 放假
2024-04-28: 调休
2024-05-11: 调休

端午节:
2024-06-10: 放假

中秋节:
2024-09-15: 放假
2024-09-16: 放假
2024-09-17: 放假
2024-09-14: 调休

国庆节:
2024-10-01: 放假
2024-10-02: 放假
2024-10-03: 放假
2024-10-04: 放假
2024-10-05: 放假
2024-10-06: 放假
2024-10-07: 放假
2024-09-29: 调休
2024-10-12: 调休

继续让其帮我转化为 json 格式

现在 AI 的解析理解能力还是不错的哈,当然,你不可能通过人为对话的方式获取解析的数据了,虽说也不是不行,但不还是人为的吗?AI 工具都提供有 API 可供调用,你可以尝试通过 API 的方式去发送数据,让其解析。

至于 API 怎么调,本文先不做探究了,后续再分享出来。

补充个额外话题:大家如果对 AI 感兴趣的话,可以来我加入的 AI 社群一起探索 AI 能力,说不定可以发掘人生的新赛道(根据个人需求进哈,毕竟也不便宜,还在涨价中……)

开源实现

我们继续探~ 这个需求肯定是普遍的,看看有没有开源的吧,那去全球最大的同性交流社区 GitHub 搜一下吧!直接搜索 holiday

还是不少的!我们自己来甄别一下吧~ 挑一下靠谱的,也可以多找几个,做一下容灾处理,因为每年的数据只需要保存一次即可,也可以将别人的自动。

选了一个感觉还算靠谱的,分享一下吧,大家可以看一下它的源码,看看别人是怎么实现的。

https://github.com/NateScarlet/holiday-cn

这个怎么使用呢?数据是更新到 GitHub 仓库里的,可以通过获取 json 数据转存到自己的系统里使用以达到高可用或离线的效果,另外这个项目也可以直接部署到自己的集群机器中,自己维护。

获取数据的方式有多种:

1,通过 github 地址获取

https://raw.githubusercontent.com/NateScarlet/holiday-cn/master/{年份}.json

eg:

https://raw.githubusercontent.com/NateScarlet/holiday-cn/master/2024.json

2,使用 JSDelivr

https://cdn.jsdelivr.net/gh/NateScarlet/holiday-cn@master/{年份}.json

eg:

https://cdn.jsdelivr.net/gh/NateScarlet/holiday-cn@master/2024.json

3,可尝试使用 ghproxy 或其他 Github 加速

https://{ghproxy服务}/https://raw.githubusercontent.com/NateScarlet/holiday-cn/master/{年份}.json

eg:

https://ghproxy.net/https://raw.githubusercontent.com/NateScarlet/holiday-cn/master/2024.json

4,将项目部署到自己的机器上

此项目的原理也比较简单,就是去定期抓取政府发布的文件,解析成标准的格式。

商业实现

我们当然不想使用付费的了,能省钱谁不愿意呢?不过有时候为了省事,我们还是会选择付费的模式的,我们了解一下别人怎么把一个东西做成收费的,也算开阔自己的视野吧。

市面上有很多提供这种工具辅助的 API 的网站,如快递查询,身份证信息查询,天气预报查询,有很多免费的资源,你把它进行整合整合,就可以发布给企业付费使用,或者免费提供当做引流方式也是不错的选择。

我搜到了这个 showapi 网站,上面刚好提供了,我们来看一眼吧。

这个我就不展开说了,点到为止吧,通过接口调用,然后把数据存起来就好了,或者每次用的时候来调一下也可以。

总结

本文由一个简单的需求【节假日判断】出发,探索了如何去根据一个需求去解决需求,并思考如何保障高可用,如何省钱,以及这个小需求是不是也能够实现商业变现的可能性,希望对大家有所帮助。

最后说一下我的选择吧,我是选择了使用 github 的开源实现,通过调用上面提到的获取数据方式中的 1-3 网址,为了增加容灾能力,会调 3 次,只要调成功一次即可跳出后续,调取成功后,将其存入自己的系统,并发出提醒,以便人工核查。

本次的分享到此结束,希望对你有所帮助。

如果你对我分享的内容感兴趣,欢迎扫码关注公众号:新质程序猿,并设置星标,推送更实时哟!

本文由 黄彦祥 创作,采用 知识共享署名 3.0 中国大陆许可协议 进行许可。
可自由转载、引用,但需署名作者且注明文章出处。