Launch Week Day 1: Socket for Jira Is Now Available.Learn More
Socket
Book a DemoSign in
Socket

chinese-workday

Package Overview
Dependencies
Maintainers
1
Versions
17
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

chinese-workday

中国工作日

latest
Source
npmnpm
Version
2.0.0
Version published
Maintainers
1
Created
Source

🇨🇳 Chinese Workday

高性能中国工作日判断库 · 今天要上班吗?

npm version npm downloads Performance

解决开发者痛点:准确判断中国工作日、节假日、调休日,支持 2011-2026年 完整数据。

🚀 快速开始

Node.js / npm

npm install chinese-workday
// CommonJS
const { isWorkday, isHoliday, getFestival } = require('chinese-workday')

// ES Module
import { isWorkday, isHoliday, getFestival } from 'chinese-workday'

console.log(isWorkday('2024-10-01')) // false (国庆节)
console.log(isHoliday('2024-10-01')) // true
console.log(getFestival('2024-10-01')) // "国庆节"

浏览器 / CDN

<script src="https://cdn.jsdelivr.net/npm/chinese-workday@2.0.0/dist/chinese-workday.min.js"></script>
<script>
  const { isWorkday } = window.chineseWorkday
  console.log(isWorkday('2024-10-01')) // false
</script>

📁 项目结构

chinese-workday/
├── src/              # 源码
├── dist/             # 构建产物
│   ├── .cjs.js       # CommonJS
│   ├── .esm.js       # ES Module
│   └── .min.js       # 浏览器/CDN
├── __tests__/        # 测试
└── bench/            # 性能测试

⚡ 性能优势

特性chinese-workday竞品平均
缓存命中率98.40%~70%
单次查询~40% 更快基准
批量查询~60% 更快基准
内存占用~30% 更少基准

批量查询(推荐多日期场景)

import { isWorkdayBatch, getFestivalBatch } from 'chinese-workday'

const dates = ['2024-10-01', '2024-10-02', '2024-10-03']
const workdayResults = isWorkdayBatch(dates) // [false, false, false]
const festivalResults = getFestivalBatch(dates) // ["国庆节", "国庆节", "国庆节"]

📊 API

基础查询

方法说明
isWorkday(date)判断是否为工作日(含调休)
isHoliday(date)判断是否为节假日
getFestival(date)获取节日名称
isAddtionalWorkday(date)判断是否为调休工作日
isWeekend(date)判断是否为周末

批量查询

方法说明
isWorkdayBatch(dates)批量判断工作日
isHolidayBatch(dates)批量判断节假日
getFestivalBatch(dates)批量获取节日名称

高级功能

方法说明
countWorkdays(start, end)计算工作日数量
getWorkdaysInRange(start, end)获取所有工作日
getHolidaysInRange(start, end)获取所有节假日
nextWorkday(date)获取下一个工作日
previousWorkday(date)获取上一个工作日
getWorkdaysInterval(start, end)计算两日期间工作日数
addWorkdays(date, n)增减工作日
getWorkdaySequence(start, end, interval)获取工作日序列
getAnnualStats(year)年度统计

节假日提醒功能

方法说明
getNextHoliday(date)获取下一个节假日
daysUntilHoliday(date)距下个节假日天数
isHolidayApproaching(date, daysBefore)节假日是否临近
getConsecutiveHolidays(date)获取连续节假日天数

自定义工作日安排

方法说明
setWorkSchedule(id, schedule)设置自定义安排
getWorkSchedule(id)获取自定义安排
isWorkdayCustom(date, id)按自定义安排判断工作日
isHolidayCustom(date, id)按自定义安排判断节假日
clearWorkSchedule(id)清除自定义安排
getAvailableSchedules()获取可用安排列表

高级统计功能

方法说明
getMonthlyStats(year, month)月度统计
getWorkdayRatio(start, end)工作日比例
getMostCommonHoliday(year)最常见节假日
getHolidaysByFestival(start, end)按节日分组节假日

工作时间相关功能

方法说明
getTotalDays(start, end)获取总天数
calculateWorkHours(start, end, hoursPerDay)计算工作小时
getWeekRange(date, startDay)获取周范围
getMonthRange(date)获取月范围
isWithinOfficeHours(date, options)是否在办公时间内

其他

方法说明
getCacheStats()获取缓存统计
clearCache()清除缓存

新功能使用示例

import {
  getNextHoliday,
  getWorkdayRatio,
  setWorkSchedule,
  isWithinOfficeHours,
  setLeaveBalance,
  applyLeave,
  generateCalendar,
  isWorkdayInTimezone,
  scheduleEventNextWorkday
} from 'chinese-workday'

// 节假日临近提醒
const nextHoliday = getNextHoliday('2024-09-25')
console.log(nextHoliday) // { date: '2024-10-01', festival: '国庆节', daysUntil: 6 }

// 工作日比例统计
const ratio = getWorkdayRatio('2024-01-01', '2024-12-31')
console.log(ratio.workdayPercentage) // 全年工作日占比

// 自定义工作安排
setWorkSchedule('my_company', {
  workdays: [1, 2, 3, 4, 5], // 周一到周五
  holidays: ['2024-01-01', '2024-12-25'], // 特殊假期
  workdaysOnWeekends: ['2024-02-04', '2024-02-11'] // 调休工作日
})

// 办公时间判断
const now = new Date()
const inOffice = isWithinOfficeHours(now, {
  startHour: 9,
  endHour: 18,
  startDay: 1,
  endDay: 6 // 周一到周六
})

// 假期余额管理
setLeaveBalance('employee_001', {
  annual: 15, // 年假15天
  sick: 10, // 病假10天
  personal: 3 // 事假3天
})

const leaveResult = applyLeave('employee_001', 'annual', '2024-06-03', '2024-06-07') // 申请5天年假
console.log(leaveResult) // { success: true, message: "5 days of annual leave applied...", remainingBalance: {...} }

// 工作日历生成
const january2024 = generateCalendar(2024, 1, { includeFestival: true, includeLunar: true })
console.log('January 2024 calendar:', january2024[0]) // First week of January

// 跨时区工作日判断
const isWorkdayInNY = isWorkdayInTimezone('2024-05-06 10:00:00', 'America/New_York') // 中国标准时间下的工作日,在纽约时区是否为工作日
const isWorkdayInUTC = isWorkdayInTimezone(Date.now(), 'UTC') // 当前时间在UTC时区是否为工作日

// 工作日事件调度
const eventId = scheduleEventNextWorkday(
  'monthly_report',
  (date) => {
    console.log(`Run monthly report on next workday: ${date}`)
  },
  '2024-05-01'
) // Schedule from May 1st

// 或者安排在特定工作日执行
scheduleEventOnWorkday(
  'quarterly_meeting',
  (date) => {
    console.log(`Quarterly meeting scheduled for: ${date}`)
  },
  '2024-06-15'
) // Assuming June 15th is a workday

支持的输入格式

isWorkday('2024-10-01') // 字符串
isWorkday(new Date()) // Date 对象
isWorkday(1727712000000) // 时间戳

🎯 使用场景

  • 考勤系统 · 工资计算 · 项目排期
  • API 服务 · 数据分析 · 前端应用

📅 数据覆盖

  • ✅ 完整支持 2011-2026 年 法定节假日和调休
  • ✅ 数据来源:国务院官方公告
  • ✅ 每年及时更新

🏆 特点

  • 高性能 · 内置 LRU 缓存
  • 零依赖
  • ESM + CJS 双支持
  • 浏览器 CDN 直通
  • TypeScript 类型支持
  • 简单易用

📄 许可证

MIT License

数据覆盖 2011-2026 年 · 定期更新国务院最新节假日安排

Keywords

workday

FAQs

Package last updated on 28 Feb 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts