工作日计算 API

按中国法定节假日与调休安排统计两个日期之间的工作日,或推算 N 个工作日之后(之前)的日期

数据来源:NateScarlet/holiday-cn(与 /api/holiday 同源,含内置兜底)

返回统一的 JSON 格式 { code, message, cached, stale, updatedAt, data },支持跨域,免注册每天可免费调用 100 次,注册后每天 10000 次。

工作日统计 / 推算 N 个工作日后的日期

GET /api/workdays

请求参数

  • start:开始日期 YYYY-MM-DD,默认今天(北京时间),示例 2026-09-28
  • end:结束日期 YYYY-MM-DD(含当天)。传 end 统计 start~end 的工作日(最多 1100 天),与 days 二选一,示例 2026-10-11
  • days:工作日数(-500~500):推算 start 之后第 N 个工作日(start 当天不算),负数往前推;与 end 二选一,示例 10

返回字段

  • mode(string):计算方式:between(统计区间,传了 end)或 add(推算日期,传了 days)
  • start(string):开始日期 YYYY-MM-DD
  • end(string|null):between:结束日期;add 为 null
  • days(number|null):add:请求的工作日数;between 为 null
  • totalDays(number|null):between:区间总天数(含首尾);add 为 null
  • workdays(number|null):between:需要上班的天数(普通工作日 + 调休上班日);add 为 null
  • offDays(number|null):between:休息天数 = weekends + holidays;add 为 null
  • weekends(number|null):between:普通周末休息天数(不含法定假期中的周末);add 为 null
  • holidays(number|null):between:法定节假日放假天数(含假期中的周末);add 为 null
  • adjustedWorkdays(number|null):between:其中调休上班(周末补班)的天数;add 为 null
  • holidayDetail(array|null):between:区间内各假期占用的放假天数;add 为 null
  • holidayDetail[].name(string):假期名称,如 国庆节
  • holidayDetail[].days(number):该假期落在区间内的放假天数
  • result(string|null):add:推算出的日期 YYYY-MM-DD(days=0 时为 start 本身);between 为 null
  • weekday(string|null):add:result 是星期几;between 为 null
  • calendarDays(number|null):add:从 start 到 result 跨越的自然日天数;between 为 null
  • years(array):计算用到的各年份放假安排及其来源
  • years[].year(number):年份
  • years[].source(string):数据来源:holiday-cn(上游)、builtin(上游不可用,用内置国务院安排)、none(该年安排尚未公布)、unavailable(上游失败且无内置数据,已降级为只按周末计算)
  • years[].published(boolean):该年是否有放假安排数据;为 false 时该年只按周六日休息计算,结果可能与实际不符
  • complete(boolean):用到的所有年份是否都有放假安排数据
  • degraded(boolean):是否有年份因上游失败降级为只按周末计算(years[].source 为 unavailable)