js如何判断是否为工作日?

不能用手动导入节假日配置,有没有相应的库?
或者判断开盘日也行?

阅读 4.5k
5 个回答

你可以通过第三方接口获取万年历来进行判断,比如https://www.mxnzp.com/doc/detail?id=1这个api,他https://www.mxnzp.com/api/holiday/single/{date}这个接口能够返回以下数据,你可以根据typeDes进行判断,或者你需要什么开盘日期,你就找那个的相关接口,一般会有第三方提供

{
    "code": 1,
    "msg": "数据返回成功",
    "data": {
        "date": "2018-11-21",
        "weekDay": 3,
        "yearTips": "戊戌",
        "type": 0,
        "typeDes": "工作日",
        "chineseZodiac": "狗",
        "solarTerms": "立冬后",
        "avoid": "嫁娶.安葬",
        "lunarCalendar": "十月十四",
        "suit": "破屋.坏垣.祭祀.余事勿取",
        "dayOfYear": 325,
        "weekOfYear": 47,
        "constellation": "天蝎座",
        "indexWorkDayOfMonth": 1
    }
}

首先要看你说的法定节假日是哪国哪个地区的法定节假日,如果是中国农历的,有很多人整理数据,我这边搞摸鱼办的时候就转过数据, https://moyuban.github.io/

这里用的是一个从2018年截止到2025年的农历 ics 文件
转数据的代码可以看这里:
https://github.com/moyuban/mo...

ics 来源于 https://github.com/lwlsw/Chin...

至于你要说准确,那是不可能准确的,按照惯例除周末之外的节假日,怎么个合并方式,国家都是临近的时候发布具体日期的,没有准确的规定。

一般来说就是周一到周五认为是工作日,然后再按照法定节假日去维护一个假期表,一般来说都是后端去做,然后前端按照后端返回的数据去显示。
所以正常都是后端定期去一个仓库拉法定节假日安排,然后去做一些业务处理。前端只是去做一下显示。


如果说到周一和周五这种,就可以直接用 date.getDay() 来获取星期。然后直接判断就好了。

前端非要做节假日判断也可以,但是就会处理起来会比较蠢,每次进入页面都要去请求节假日的接口,然后去判断当天是否为假日。后端的话就直接把对应的数据存储起来直接取值之后判断就可以了(这样来说其实前端也可以把节假日数据缓存在浏览器本地然后直接取值/dog)。

相关阅读
Date.prototype.getDay() - JavaScript | MDN

只判断是否是周一到周五不行吗, 反正周六周日一定闭市

那就判断不是星期天星期六

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏