日期计算器

数学

算工期、排考勤、核合同到期日:在某个日期上加减小数天、月、年,或算出两个日期之间的天数、周数与工作日并自动跳过周末。支持加减天数、周数、月数与年数,也可计算两个日期之间的差值。可切换是否跳过周末与自定义节假日,得出真正的工作日天数。月底加减月份时会自动对齐到该月最后一个有效日。工作日与自然日结果分开给出。

加减计算
基准日期
+ 天
+ 月
+ 年
2026-10-08Thursday
差值
起始日期
→
结束日期
100天
14周
2,400小时
144,000分钟

关于 日期计算器

"项目交付日往后顺延 45 天是几号""合同还剩多少周到期""距离上线还有多少小时"——这类日期推算靠掰手指容易出错,尤其跨月跨年时。本工具提供两个独立模块:一是日期加减,在基准日上增减天、月、年并显示对应星期几;二是日期间隔,计算两个日期相差的天数、周数、小时数和分钟数。底层使用成熟的日期运算库处理闰年和月份长度差异,结果准确可靠。所有计算均在浏览器本地完成,结果即时呈现,无需等待网络请求,它适合核算项目排期、合同到期与倒计时,跨月跨年也准确。例如计算 2026-01-01 到 2026-08-25 的间隔,会给出相差 236 天、33 周 5 天与工作日数。核算排期时留意是否按工作日计算,含周末的结果会与目标日期有明显差异;跨月跨年运算已处理好闰年与月份长度,可直接用于合同到期提醒。

时区是日期计算里最常见的偏差来源,尤其在只处理「日期」而不含时刻的场景。同一个瞬间在不同时区属于不同的日期,因此两个系统若采用不同时区,跨日的结果就会差一天;而当输入只有日期没有时间时,隐含的时区假设会直接影响加减结果。因此计算前先统一时区,比调整算法更重要。

按月份加减时的边界情况需要明确定义,否则会得到不直观的结果。当起始日大于目标月份的天数时(例如某月三十一日加一个月后落在只有三十天的月份),不同实现分别采取「回退到该月最后一天」或「溢出到下个月第一天」两种策略,结果相差数天。因此在涉及月度结算或订阅周期时,必须先确认采用哪一种约定。

工作日计算需要一份节假日数据作为依据,而它无法从日期本身推导出来。工作日与自然日的差别、调休安排、以及不同地区的节假日各不相同,因此任何「自动排除节假日」的功能都必须依赖一份可更新的日期表。把表当作配置而非内置常量,才能在下一年度到来前及时更新。

夏令时切换会造成某些日期出现「跳过的一小时」或「重复的一小时」。在采用夏令时的地区,切换日的当地时刻并不连续,按小时累加就可能落在不存在或出现两次的时刻上,而按天累加通常不受影响。因此在涉及跨夏令时边界的小时级计算时,用绝对时间轴运算比用当地时刻加减更可靠。

时间戳的单位与起点需要显式确认,这是系统间对接时的常见事故点。同一串数字在一种约定下表示秒,在另一种约定下表示毫秒,两者相差三个数量级;而起点不同(例如以某一年份为零点)会让整数值完全无法对应。因此交换时间戳时应当同时在文档里写明单位与起点,而不是依赖双方默认一致。

最后,日期的存储与展示应当分离,这是避免多数问题的结构性做法。存储时用无歧义的形式(带时区的绝对时间,或纯粹的日期字段),展示时再按用户所在时区与习惯格式渲染。把两者混在一起,例如直接存储本地格式化后的字符串,会在跨时区或跨区域使用时立刻暴露问题,且很难事后补救。

实现原理

日期加减的难点不在算术而在边界口径:是否包含起始当天、是否包含结束当天,会带来整整一天的差异;跨月跨年时天数并不固定,因此不能按月数乘以三十粗算。工作日口径还需跳过周末与法定节假日,而节假日随年份与地区变化,必须依赖可维护的日历数据。

输入2026-01-31 往后 1 个月
输出2026-02-28(按日历推进而非加 30 天;目标月没有该日时需约定取月末)

使用方法

  1. 打开「日期计算器」
  2. 输入需要计算的数值
  3. 根据需要调整输出选项
  4. 点击「计算」按钮,结果实时显示
  5. 复制或导出结果

使用场景

  • 截止日推算 — 在签约日上加约定天数,得出合同到期或验收的具体日期。
  • 倒计时 — 计算今天到发布日还剩多少天和小时,安排冲刺节奏。
  • 订阅周期 — 在开通日加一个月或一年,确定下次续费日期。
  • 工龄统计 — 用两日期间隔算出入职至今的总天数或周数。
  • 里程碑规划 — 从启动日逐步加月数,排出各阶段交付时间点。

常见问题

加"1 个月"时遇到月底怎么处理?

采用日期库的标准规则:如 1 月 31 日加一个月,因 2 月没有 31 日会落到 2 月末。跨月加减建议核对结果星期几,避免边界误差。

间隔计算包含闰年和闰秒吗?

会正确处理闰年(2 月 29 日),天数计算因此准确;但不涉及闰秒,秒级精度对日常日期计算没有影响。

相差天数是否包含起止两端?

计算的是两个日期之间的完整间隔(差值),不是把两端都算进去的"含头含尾"天数。如需后者请在结果上加 1。

可以同时加天、月、年吗?

可以。三个字段会依次叠加,先加年、再加月、最后加天,组合推算复杂的顺延规则很方便。

想把结果换算成时间戳怎么办?

本工具输出标准日期与 ISO 格式。若需要 Unix 时间戳,可把结果日期粘贴到本站的时间戳转换工具进行互转。

算出来的天数与预期差一天,问题出在哪?

常见原因是边界是否计入没有约定。从基准日往后顺延三十天,是否包含起始当天、是否包含结束当天,会带来整整一天的差异;另一个原因是时区,同一时刻在不同时区对应的「今天」可能不同。约定口径并把包含关系显式写出来,比事后争论结果更有用,尤其在跨团队对接时更应如此。

工作日与自然日的推算结果能互相替代吗?

不能。工作日推算需要跳过周末与法定节假日,而节假日随年份与地区变化,必须依赖一份可持续维护的日历数据;只按自然日计算会让交付期与账期出现明显偏差。需要工作日口径时,应确认所用日历的适用范围与更新时间,并注意调休安排——把某个周末调成工作日同样会改变结果。

计算「工作日」时结果和预期不同?

工作日计算默认排除周末,但不含法定节假日——中国调休的补班周末、各地假日安排都需要你自行处理。需要精确到当地假期表的场景,把节假日列表纳入计算,否则只把结果当作「排除周末的天数」。

广告