经验分享:根据国家法定节假日和调休安排,自动为用户生成未来的工作日作为选项

前言:我之前使用多维表格制作了一个“会议室预约系统”的小应用,其中用户可以选择未来7天的日期进行预约。我碰到了一个难题,就是这7天必须是工作日,要考虑国家法定节假日、周末、调休等。我找了很多API和工具啥的,也没有很靠谱的。最后没办法自己维护了一份国家法定节假日的数据,写了几个函数去计算,这会产生一个问题,就是我每年都要去关注国家假日办的通知,去更新我的节假日和调休信息。后来我想到一个新的办法,请大家往下看。(头发少的人就是聪明🤑

应用场景:充分考虑到周末、国家法定节日、调休,为用户提供未来7天的工作日作为选项。其实说实话,在我的“会议室预约系统”中,这个考不考虑无所谓,但是我天生就是个“抬杠”的😁。下面主要针对我自己的系统进行说明,其他应用场景大家自己丰富去吧。

优点:不用调用API,不用自己维护数据,全自动依靠WPS自己计算工作日。在某些需要严格依赖工作日计算工时或者安排日程的系统中,这种方法很有效!!!

(具体实现,其实很简单,我就简单的说吧)

  1. 多维表格公式字段中,有一个公式为“=NETWORKDAYS.PLUS([@日期],[@日期])”,这个公式可以计算两个日期间的工作日的天数,这个公式考虑了国家法定节假日和调休,而且自动更新,因为国家已经制定好了2026年的假日安排(国家每年会提前通知),所以这个公式的内置数据已经更新到了2026年,虽然2027年之后的不是很靠谱,但是不影响我们使用。

  1. 当我们把“=NETWORKDAYS.PLUS([@日期],[@日期])”其中的两个参数日期改为同一天,我们就会得到这一天是不是工作日,结果为1,那么就表明这一天是工作日,为0,就表明这一天不是工作日。我据此在多维表格中建立了一份数据(如下图),从2026年1月1日一直到2050年12月31日,算出了每一天是不是工作日。(虽然2027年之后,国家没有通知具体假日安排,但是我们提前建立好后,一旦国家发文了,WPS自动会更新公式的。也就是直到2050年年底,我再也不用自己去维护假日数据了,一切交给WPS了)

  1. 有了这个假日数据库,相信大家对做好一个事关工作日的系统,就信心十足了吧。在我的“会议室预约系统”中,我设定了一个自动化流程定时任务(这个定时任务我也设置到了2050年最后一秒,我是杠精,大家别学我),即每天下午16点,执行Python脚本,脚本会产生从次日起算的7个工作日,这7个工作日会写入“智能表格”中,由“智能表单”的“下拉题”(该题引用“智能表格”的数据作为选项)。因为我的假日数据库从2026年1月1日起算,第一个工作日是2026年1月4日,所以就是下面这个样子了。

  1. 这是脚本代码:

from datetime import datetime, timedelta

field_condition = {
  "mode":"AND",
  "criteria":[
    {
      "field":"工作日",
      "op":"Equals",
      "values":[
        "1"
      ]
    }
  ]
}
#sheet_name对应上述节假日数据表的名称,请改成自己的名称吧
df = dbt(sheet_name='法定工作日', condition=field_condition)
workday = df['日期'].values
today = datetime.now().date()
date_list = []
i = 0
while len(date_list)<7:
  current_date = today + timedelta(days=i+1)
  if current_date.strftime('%Y/%m/%d') in workday:
    date_list.append(current_date.strftime('%Y年%m月%d日'))
  i += 1
date_list.insert(0, '预约日期')
url = 'https://kdocs.cn/l/cp********Xz' #换成自己的智能表格url
#下面的'预约日期选项',是智能表格中的工作表的名称,请改成自己的
delete_xl(range='A:A', sheet_name='预约日期选项', book_url=url)
write_xl(data=date_list, range=f'A1:A{len(date_list)}', sheet_name='预约日期选项', book_url=url)

后记:今天有点时间,就一股脑发了两个我在使用多维表格的过程中,发现问题,解决问题的经验。我本人2012年从南京工程学院计算机工程学院毕业后,几乎没怎么在软件公司工作过,后来考上了老家市直单位全额拨款事业单位,拿着微薄的死工资。但是想学技术的心一直未变,说来,自己现在哪还有什么技术,只能借助多维表格和小程序开发,让单位同时觉得我是个“技术大拿”,满足一丁点虚荣心。我还有不少经验,最近不发了,哪天想发随缘吧!!!

江苏省
浏览 1785
收藏
6
分享
6 +1
5
+1
全部评论 5
 
峙无波
点赞,厉害
· 贵州省
1
回复
 
风清月霁
风清月霁 Lv.1 新人创作者WPS寻令官WPS产品体验官

Lv.1新人创作者

点赞教程
· 河南省
回复
 
Hypnotist
Hypnotist Lv.3 优质创作者WPS寻令官WPS产品体验官

Lv.3优质创作者

技术贴,点赞
· 四川省
回复
办公助手
感谢,回复太少了,没啥发的动力了
· 江苏省
回复
 
测试号
自己的测试号,再顶一顶
· 江苏省
回复