日期时间 本地计算 开箱即用 内置示例 不留痕迹

日期计算器

计算两个日期的间隔天数、含头含尾天数与工作日数,也支持从一个日期向前或向后推算 N 天并显示目标日期是星期几。采用 UTC 毫秒计算避免夏令时误差,全部在浏览器本地完成。

项目周期多少天、合同还剩几天到期、请假从几号到几号共几天、30 个工作日后是哪天——日期间隔与推算是日程管理的基本功。本工具算两个日期的间隔天数、含头含尾天数与工作日数,也支持从某天向前向后推 N 天并显示星期几。

口径提醒:间隔天数默认不含起始日(1 号到 2 号是 1 天),含头含尾则把两天都算进去(租房、住宿按这种算法);工作日数只排除周末,法定节假日与调休请用工作日计算器(内置放假安排)。计算用 UTC 毫秒差,不受夏令时影响。

使用步骤

  1. 选模式:间隔统计(两日期之间)或推算(某日期 ± N 天)。
  2. 间隔模式看三个数:间隔天数、含头含尾天数、工作日数。
  3. 推算模式填 N(可负数往前推),看目标日期与星期几。
  4. 需要跳过法定假日时改用工作日计算器。

计算原理与示例

两个日期相差几天

间隔天数:把两个日期转成 UTC 毫秒后相减再除以 86400000。2026-01-01 到 2026-01-31 间隔 30 天(不含起始日),含头含尾为 31 天。

日期天数推算

日期推算:起始日期加(减)N 天得到目标日期。例如 2026-01-01 加 45 天是 2026-02-15,那天是星期日。

工作日怎么数

工作日数按周一至周五统计(含两端,不考虑法定节假日调休)。例如 2026-01-01(周四)到 2026-01-04(周日)含头含尾共 4 天,其中工作日 2 天。

代码示例

JavaScript UTC 毫秒差算间隔(免夏令时)

const DAY = 86400000;
const utcMidnight = (d) => Date.UTC(d.getFullYear(), d.getMonth(), d.getDate());

function diffDays(a, b) {
  return Math.round((utcMidnight(b) - utcMidnight(a)) / DAY);
}

diffDays(new Date(2026, 8, 1), new Date(2026, 8, 15));  // 14
// 含头含尾 = diffDays + 1;用本地午夜相减在有夏令时的时区会差 1 小时

Python date 相减直接得天数

from datetime import date

(date(2026, 9, 15) - date(2026, 9, 1)).days   # 14

# 推算 N 天:
from datetime import timedelta
date(2026, 9, 1) + timedelta(days=30)          # 2026-10-01

常见问题

间隔天数算不算起始那一天?

本工具默认给出「不含起始日」的间隔(1月1日到1月31日是30天),同时给出「含头含尾」的结果(31天)。算项目工期、考试倒计时一般用含头含尾,算利息、年龄跨度用不含起始日,按需取用。

工作日计算考虑法定节假日吗?

本工具本身只按「周一至周五」统计。要把法定节假日与调休算进去,请用工作日计算器——它已内置 2024—2026 年放假安排,无需手动录入。

为什么用别的工具算会差一天?

常见原因是口径不同(是否含头含尾)或跨时区/夏令时问题。本工具统一用 UTC 毫秒差计算,只与日期本身有关,不受时区和夏令时影响。

怎么算两个日期之间有多少天?

把两个日期都转成 UTC 时间毫秒后相减,再除以 86400000(一天的毫秒数)取整即可。用 UTC 而不是本地时间,可以避开夏令时切换带来的小时级误差,结果更稳定。

为什么闰年的 2 月有 29 天?

地球公转一周约 365.2422 天,四年累积约多出一天,所以每 4 年设一个闰年补上 2 月 29 日。但整百年需能被 400 整除才是闰年,因此 2000 年是闰年、1900 年不是,这样能进一步校正误差。

「距离某天还有多少天」该用哪个功能?

用日期推算或倒计时类功能。本工具支持从基准日加(减)N 天并显示目标日期是星期几;如果只需要「还剩多少天」的倒计时形式,可以配合倒计时计算器使用。

计算天数时算不算周末和节假日?

本工具同时给出「自然日」和「按周一至周五统计的工作日」两种结果,工作日只排除周末、不排除法定节假日。涉及交付期、审批时限等场景请用工作日计算器,它已内置 2024—2026 年法定假日与调休补班。

延伸阅读

来自本站原创文章,讲清这个工具背后的算法与口径。