📅
免费日期差计算器
计算两个日期之间的精确差值——年、月、日、周、工作日(不含周末)、小时和分钟。
加载后可离线使用
快速预设
选择两个日期以查看时间差。
常见用途
- 计算距预产期的天数倒数计时至宝宝预产期,找出距离大日子还有多少周、天和小时。
- 距离您的假期还有多少天倒数计时至您的旅行,包括工作日、总天数和剩余周数以供规划之用。
- 项目截止日期的工作日计算今天与项目截止日期之间的确切工作日数(不包括周末)。
- 计算周年纪念日找出您与某个特殊的人在一起的确切天数、月数和年数。
- 两人之间的年龄差计算器计算两个生日之间的确切年龄差,相差的年、月和日。
工作原理
所有计算都在浏览器中使用手写的 UTC 算术完成——没有外部库、没有服务器请求。工具将 YYYY-MM-DD 字符串解析为日历分量,使用 Date.UTC() 毫秒时间戳计算差值以避免夏令时漂移,并逐日迭代统计周一至周五的工作日。
- 1安全的日期解析每个日期字符串都先用正则校验,再通过 Date.UTC() 重建——而不是 new Date(string)——因此位于 UTC 以西的用户不会因浏览器按本地时区解释纯日期输入而看到星期偏移。
- 2UTC 毫秒相减两个日历日期通过 Date.UTC(y, m, d) 转换为 UTC 午夜时间戳。整除 86,400,000 ms 得到精确的整天数,不受夏令时切换影响——否则某一天可能显示为 23 或 25 小时。
- 3日历分解与工作日计数手写的年/月/日分解会处理月份天数不规则的情况(需要时从上一个月借天数)。另一个循环逐一遍历两个日期之间的每个 UTC 日,只在周一至周五(getUTCDay() !== 0 或 6)时计数,无论地区如何都能得出精确的工作日总数。
- 4以所有单位显示结果总数使用页面语言的 toLocaleString() 格式化,按地区习惯进行数字分组,然后同时以年/月/日、总天数、工作日、周、小时和分钟显示。当前的日期对通过 history.replaceState 写入网址,因此任何结果都可以收藏或作为直接链接分享。