免费工具 日期计算器:日期加减天数、加工作日、查第几周
从今天(或任意一天)往后、往前推若干天、周、月、年,马上知道是几月几号、星期几。要按工作日推,选中国节假日就会跳过法定假日、把调休上班的周末算进去;结果日期是第几周、一年中的第几天也一起列出来。
- 加减年 / 月 / 周 / 天
- 工作日含调休
- 本地计算
日期加减和工作日推算
默认是今天加 100 天。年、月、周、天可以同时填,先加年月、再加周和天;填负数就是反方向。
打开页面时自动填今天(分享链接里的日期除外)。
选「工作日」时只数工作日,跳过周末和节假日。
中国:国务院办公厅放假通知(2019–2027 年),含调休上班。美国:联邦假日及周末补休。也决定下面「当天安排」怎么显示。
起始日不算,往后(或往前)数到第 N 个工作日,同 Excel 的 WORKDAY。
结果日期
2027-02-18 星期四
2026-11-10 加上 100 天,即往后 100 天
工作日
日期信息
起始日期和结果日期各是星期几、第几周、一年中的第几天,以及当天是不是工作日。
| 起始日期 | 结果日期 | |
|---|---|---|
| 日期 | 2026-11-10 | 2027-02-18 |
| 星期 | 星期二 | 星期四 |
| 当天安排 | 工作日 | 工作日 |
| ISO 周数 | 2026 年第 46 周(2026-W46) | 2027 年第 7 周(2027-W07) |
| 周数(周日开始,同 Excel WEEKNUM) | 第 46 周 | 第 8 周 |
| 一年中的第几天 | 第 314 天,还剩 51 天(全年共 365 日) | 第 49 天,还剩 316 天(全年共 365 日) |
| 季度 | Q4 | Q1 |
| 当月天数 | 30 天 | 28 天 |
| 闰年 | 否 | 否 |
| 距今天 | 今天之前 1 天 | 今天之后 99 天 |
途中跳过的节假日和调休
工作日模式下,起始日之后到结果日之间影响计数的日子。
分享这组输入:数值写在链接的 # 后面,不会发到服务器。
https://tapcub.com/zh/tools/date-calculator
版本 v1.0更新于 更新记录
结果日期旁边的几项信息
算出日期以后,常常还要知道它是星期几、在第几周、是不是上班日,这些都列在信息表里。
结果日期
加减年和月时按日历走:2026-08-31 加 6 个月是 2027-02-28,因为 2 月没有 31 号,取当月最后一天,页面会提示。加周和天就是直接数日子,不受月份长短影响。
工作日推算
起始日本身不算,从第二天开始一天天数,周末和法定节假日跳过,调休上班的周末算一个工作日。「中间隔了几个日历日」帮你判断要不要提前:10 个工作日在国庆前后可能要跨 3 周。
ISO 周数
按 ISO 8601:每周从周一开始,含当年第一个周四的那一周是第 1 周。所以 2027-01-01(周五)属于 2026 年第 53 周。国内排期、数据库 YEARWEEK(date, 3)、Excel ISOWEEKNUM 用的都是它。
周数(周日开始)和第几天
另一种常见周数:周日开始、1 月 1 日所在的那周算第 1 周,和 Excel WEEKNUM 默认一致,美国日历常用。一年中的第几天就是从 1 月 1 日数起的序号,2026-11-10 是第 314 天。
「当天安排」按上面选的节假日口径判断;只去周末时只分工作日和周末。
三步推算日期
边填边算。常用的 30 天后、100 天后、6 个月后、10 个工作日后都有按钮。
-
1
定起始日期
默认今天。算合同到期、发货日、试用期结束时,填合同签订日或下单日。
-
2
填要加减的量
按日历推就填年、月、周、天,可以组合(比如 1 年 2 个月);按工作日推就把「加减什么」换成工作日,填天数。往前推选「往前(减)」。
-
3
看结果和日期信息
大字是结果日期和星期几,下面写明加了什么、跨了多少天。信息表里有第几周、一年中的第几天、当天是否上班;工作日模式还会列出途中跳过的假期。
先加年月,再加周和天;工作日逐日数
日期换成从 1970-01-01 起的第几天(整数)再计算,不经过时间戳,所以不受时区和夏令时影响。加减年月的规则和 Python 的 dateutil、Excel 的 EDATE 一致;加工作日和 Excel 的 WORKDAY 一致,但多了调休上班的周末。
- 年和月先合并成月数一起加,目标月份没有这一天时取当月最后一天;之后再加「周 × 7 + 天」
- 加 N 个工作日:起始日不算,往后一天天数,遇到工作日计 1,数到 N 为止;N = 0 时就是起始日
- 工作日判断:周一到周五是工作日,法定节假日不是;中国口径下通知里写明上班的周末是工作日
- ISO 周:周一开始,周四落在哪一年,这一周就属于哪一年;有的年份有 53 周(2026 年就是)
- 中国节假日来自国务院办公厅 2019–2027 年的放假通知;美国联邦假日按 5 U.S.C. 6103 推算,周末的假日在周五或周一补休
加月份
结果 = 目标月份的 min(起始日, 当月天数)
2026-01-31 + 1 个月 = 2026-02-28
加周和天
结果 = 起始日 + 周 × 7 + 天
2026-11-10 + 100 天 = 2027-02-18
ISO 周数
周数 = ⌊(本周周四是当年第几天 − 1) ÷ 7⌋ + 1
2026-11-10 → 2026-W46
周日开始的周数
周数 = ⌊(第几天 − 1 + 1 月 1 日是周几) ÷ 7⌋ + 1
周日 = 0;2026-11-10 → 第 46 周
几种常见推算,结果逐个核对
起始日期都填 2026-11-10(周二)或表里写的日期,节假日口径选「中国」。
| 问题 | 怎么填 | 结果 |
|---|---|---|
| 100 天后是几号 | 2026-11-10,加 100 天 | 2027-02-18 星期四 |
| 90 天前是几号 | 2026-11-10,往前 90 天 | 2026-08-12 星期三 |
| 月底加 6 个月 | 2026-08-31,加 6 个月 | 2027-02-28 星期日(2 月没有 31 号) |
| 10 个工作日后 | 2026-11-10,加 10 个工作日 | 2026-11-24 星期二,跨 14 天 |
| 国庆前 5 个工作日后 | 2026-09-30,加 5 个工作日 | 2026-10-13 星期二,跨 13 天 |
| 跨年的周数 | 查 2027-01-01 的信息 | ISO 2026-W53;周日开始的周数为第 1 周 |
国庆那一行:10 月 1 日到 7 日放假,8 日、9 日上班数 2 天,10 月 10 日(周六)调休上班数第 3 天,12 日、13 日数到第 5 天。只去周末的话会得到 2026-10-07,正好落在假期里。
日期加减最容易出的错
多数错误都发生在月底、跨年和时区这几个边界上。
用 JS 的 setMonth 加月份
new Date(2026, 0, 31) 再 setMonth(1) 会得到 3 月 3 日:2 月没有 31 号,多出来的天数顺延到了下个月。业务上「1 月 31 日加 1 个月」一般指 2 月 28 日,要自己判断月底。
跨年时 ISO 周的年份写错
2027-01-01 是 ISO 2026 年第 53 周。如果拿日期本身的年份拼周数,会得到不存在的「2027-W53」。按周汇总的报表、周报文件名要用 ISO 周所属的年份(MySQL YEARWEEK(date, 3)、Python isocalendar())。
把起始日算成第 1 个工作日
「3 个工作日内发货」一般从下单次日算起。起始日也算进去会早一天到期,承诺给客户的日期就错了。这里和 Excel WORKDAY 一样,起始日不算。
日期字符串被当成 UTC
new Date("2026-11-10") 在 JavaScript 里按 UTC 零点解析,在美国时区显示成 11 月 9 日。只关心哪一天时,按年月日分别处理,或者明确写上时区。
时间间隔在报表里直接算
用户从首次访问到首单隔了几天、复购间隔多长,这些不用导出日期再手算,TapCub 的间隔分析会直接给出分布和分位数。
日期计算器怎么算 100 天后是几号?
起始日期选今天(打开页面默认就是),「往后」,天数填 100,结果马上出来。比如从 2026-11-10 算,100 天后是 2027-02-18,星期四。往前推就选「往前(减)」。
日期加一个月,遇到月底怎么算?
目标月份没有这一天时取当月最后一天:1 月 31 日加 1 个月是 2 月 28 日(闰年 29 日),3 月 31 日减 1 个月是 2 月 28 日。这和 Excel 的 EDATE、Python 的 relativedelta 一致。直接用 JS 的 setMonth 会顺延到 3 月初。
怎么推算 N 个工作日后的日期?调休算不算?
把「加减什么」换成工作日,填天数。起始日不算,往后逐日数,周末和法定节假日跳过;选「中国」时,通知里写明上班的周六、周日也算一个工作日。Excel 的 WORKDAY 只能扣掉你列出的假日,算不进调休上班的周末。
今天是第几周?ISO 周数和 WEEKNUM 有什么不同?
ISO 周数(ISO 8601)每周从周一开始,含当年第一个周四的那周是第 1 周,跨年时可能属于上一年第 52 或 53 周;Excel WEEKNUM 默认周日开始、1 月 1 日所在的那周就是第 1 周。两种都列在信息表里,2026-11-10 两种都是第 46 周,年底年初会不一样。
今天是一年中的第几天?
从 1 月 1 日数起的序号,信息表「一年中的第几天」就是,还写了今年还剩几天。2026-11-10 是第 314 天,还剩 51 天。Excel 里可以写 =A1-DATE(YEAR(A1),1,0)。
在 Excel、MySQL 里怎么做同样的计算?
Excel:加天数 =A1+100,加月份 =EDATE(A1,6),加工作日 =WORKDAY(A1,10,假期区域),ISO 周 =ISOWEEKNUM(A1)。MySQL:DATE_ADD(d, INTERVAL 6 MONTH)(月底同样取最后一天)、YEARWEEK(d, 3)。