Skip to content

MrSeaWave/chinese-holidays

Repository files navigation

chinese-holidays

中国法定节假日查询,判断当前日期是否是节假日

数据源来自 holiday-cn(自动每日抓取国务院公告

npm (scoped) npm TESTS CI codecov License: MIT

安装

$ npm i @swjs/chinese-holidays

基本用法

import { isWorkingDay, isHoliday, isWeekEnd, getDateInfo, Holidays } from '@swjs/chinese-holidays';

async function main() {
  const date = '2022-02-01';
  //  判断 2022-02-01  是不是节假日
  await isHoliday(date); // true
  //  判断 2022-01-29  是不是节假日
  await isHoliday('2022-01-29'); // false
  //  判断 2022-01-31  是不是节假日
  await isHoliday('2022-01-31'); // true

  // 判断 2022-02-01 是不是工作日
  await isWorkingDay(date); // false
  //  判断 2022-01-29  是不是工作日 (含法定调休上班
  await isWorkingDay('2022-01-29'); // true

  //  判断 2022-01-29  是不是正常休息的周末 (不含法定调休上班
  await isWeekEnd('2022-01-29'); // false
  //  判断 2022-04-09  是不是正常休息的周末
  await isWeekEnd('2022-04-09'); // true

  // 获取日期信息
  await getDateInfo('2022-02-01');
  // 返回如下数据
  //   {
  //   "name": "春节",
  //   "date": "2022-02-01",
  //   "day": "星期二",
  //   "type": 3
  // }

  // 自己手动替换baseUrl参数
  let holidays = new Holidays({
    baseUrl: 'https://gcore.jsdelivr.net/gh/NateScarlet/holiday-cn@master',
  });
  await holidays.isHoliday('2022-12-31').then(console.log);
}

参数

isWorkingDay, isHoliday, isWeekEnd, getDateInfo 所需要的参数如下:

参数 说明 类型 默认值
date 日期 string | Date | number -

isWorkingDay

判断当前日期是否是工作日(含节假日的调休)

返回值为 boolean 类型

isHoliday

判断当前日期是否是法定节假日

返回值为 boolean 类型

isWeekEnd

判断当前日期是否是周末(不包含节假日调休上班)(如果周六为调休上班,则为 FALSE,不算做周末

返回值为 boolean 类型

getDateInfo

返回值为:

/**
 * @typedef dateInfo
 * @property {string} name 工作日,周末,春节,元旦,,,
 * @property {string} date 日期
 * @property {string} day 星期几
 * @property {number} type 1-工作日 2-周末 3-法定节假日 4-节假日调班
 */
const dateInfo = {
  name: '春节',
  date: '2022-02-01',
  day: '星期二',
  type: 3,
};

Holidays

Holidays 类,上述方法都是从 new Holidays 导出的,如果想要修改基础配置,可以使用此类

参数 说明 类型 默认值
baseUrl cdn 前缀,如果想要进行更换,请确保更换后的链接(${baseUrl}/2022.json) 可以访问,e.g: https://fastly.jsdelivr.net/gh/NateScarlet/holiday-cn@master/2022.json string https://fastly.jsdelivr.net/gh/NateScarlet/holiday-cn@master

CHANGELOG

CHANGELOG.md

TODOLIST

  • 增加手动更新缓存的功能
  • 提供离线模式

Contributing

如何贡献代码查看 CONTRIBUTING