日期计算器,免费
计算两个日期之间的差值,或为日期加减天数。
日期差是如何计算的?
日期差使用两个日期之间的精确日历天数进行计算。结果还会以周、月、年的形式给出等效值,方便参考。闰年会自动处理。
是否会考虑闰年?
会。所有计算都使用 JavaScript 原生的 Date 对象,能正确处理闰年、各月天数和夏令时切换。
工作原理
- 选择计算模式:计算两个日期之间的差值,或在起始日期上加减一个时长。
- 输入日期:使用日期选择器或按 YYYY-MM-DD 格式输入。可包含时间以达到秒级精度。
- 获取结果:可同时以年、月、周、天、时、分、秒查看差值。
为什么使用日期计算器?
手工计算两个日期之间的天数既慢又容易出错 , 尤其是跨月、闰年和时区切换时。这款计算器能正确处理所有日历边界情况。常见用途:合同期限、年龄核查、项目排期、截止日期倒计时、事件发生至今的天数、账单到期日和订阅续期周期。加减模式对于在起始日期上加一定数量的工作日、周或月来计算未来日期非常有用。
您可以计算什么
- 日期差 , 两个日期之间精确的年、月、周、天
- 添加时长 , 在起始日期上加 N 天/周/月后的日期
- 减去时长 , 参考日期之前 N 个周期的日期
- 年龄计算 , 自出生日期起的完整年、月、日
- 工作日 , 仅计算工作日,排除周末
什么是日期计算器?
日期计算器回答最常见的三个日历问题:两个日期之间相隔多少天、距参考日期 N 天是哪一天,以及日历对特定日期怎么说(星期几、年中第几天、周数、闰年状态)。每个问题在工具中只需几秒钟,如果您尝试用挂历手工完成,则需要十分钟容易出错的计算。
日历算术充满了边缘情况。二月有 28 或 29 天,取决于闰年规则。公历(1582 年引入)在某些国家与儒略历有 12 天的间隔。夏令时每年加减小时两次。不同国家由于地区性假日,对「工作日」的定义不同。一个构建良好的日期计算器正确处理这些,以便您不必考虑它们。
这个工具使用您浏览器的原生 JavaScript Date 对象,它实现了从约公元 1 年到 275760 年的前推公历。该工具在您的浏览器中运行,所以您的日期和出生日期永远不会触及我们的服务器。三个标签(日期差异、加/减天数、日期信息)涵盖了典型用户提出的约 95% 的日期数学问题。
计算器内部有什么
该工具在顶部展示三个标签:日期差异(两个日期之间)、加/减天数(带偏移量的日期数学)和日期信息(单一日期事实)。点击标签切换面板。这些标签是互斥的;切换不会擦除其他面板中的值,直到您重新加载。
日期差异面板接受两个 HTML5 日期输入(开始日期和结束日期),每个在大多数平台上都使用浏览器的原生日期选择器呈现。结果面板显示总天数,加上以周、月和年为单位的等值以提供上下文。闰年和月份长度由底层 Date 对象自动处理。
加/减天数面板接受开始日期、操作(加或减)和天数。结果是显示星期几的计算日期。日期信息面板接受单一日期,并显示星期几、年中第几天(1 到 365 或 366)、ISO 周数、闰年标志以及用普通语言表达的日期。当您点击操作按钮时,所有输出都会更新。
历史和背景
儒略历(公元前 45 年)
尤利乌斯·凯撒于公元前 45 年对罗马历法的改革,由亚历山大里亚天文学家索西琴尼设计,引入了 365 天的年份,每四年一个闰日。儒略年平均 365.25 天,比真实的回归年约 365.2422 天略长。漂移到 16 世纪累积了约 10 天,这为公历改革奠定了基础。
公历(1582)
教皇格雷戈里十三世在 1582 年的改革通过删除 10 天纠正了漂移(1582 年 10 月 4 日在天主教国家被 1582 年 10 月 15 日替代),并改进了闰年规则:能被 100 整除的年份不是闰年,除非它们也能被 400 整除。所以 1900 年不是闰年,但 2000 年是。改革不平衡地推出:英国及其美洲殖民地在 1752 年采用它(删除 11 天),俄罗斯在 1918 年,希腊在 1923 年。
Unix 纪元(1970)
贝尔实验室 Unix 在 1960 年代后期选择了 1970 年 1 月 1 日 00:00 UTC 作为其时间表示的起源点。每个 Unix 时间戳计算自这个纪元以来的秒数,这就是为什么该日期在计算中无处不在。JavaScript 的 Date 对象内部存储自 Unix 纪元以来的毫秒数,并将其用作每个日期操作的计算基础,包括此工具中的操作。
ISO 8601 标准化日期表示(1988)
ISO 8601:1988 定义了通用日期格式 YYYY-MM-DD、24 小时制时间格式 HH:MM:SS 和 ISO 周编号方案(第 1 周包含一年的第一个星期四,周从星期一开始)。该标准使 2026-05-19 在任何国家都意味着同样的东西,消除了 05/19/2026(美国)与 19/05/2026(英国)的歧义。这个计算器内部使用 ISO 8601,并在日期信息标签中提供 ISO 周数。
JavaScript Date 对象(1995)
Brendan Eich 在 1995 年的 JavaScript 1.0 包括以 Java 的 java.util.Date(本身借鉴 Unix)为模型的 Date 对象。它出了名的未充分规范且古怪:解析 2 与 02 在不同浏览器中给出不同结果,月份索引从 0 到 11 而不是 1 到 12,时区处理不一致。这些怪癖今天部分得到解决,但大多数仍因向后兼容性而保留。
Temporal API(2024 起)
TC39(JavaScript 标准机构)在 2024 年批准了 Temporal API,这是对旧 Date 对象期待已久的替代品。Temporal 干净地分离日期、时间、datetime、持续时间和时区概念,修复了 25 年累积的怪癖。截至 2026 年,Temporal 在现代浏览器中以标志和通过 polyfill 发布。这个计算器的未来版本将在浏览器支持普遍后使用 Temporal。
实用工作流
项目截止日期倒计时
输入今天的日期作为开始,项目截止日期作为结束,点击计算。该工具显示剩余的确切天数,加上行政摘要措辞的周和月。对于项目计划、OKR 检查、冲刺规划以及任何「两个月零 12 天」比「73 天」读起来更好的设置都有用。
年龄计算
输入出生日期作为开始,今天的日期作为结束。结果显示年、月和日。这是医疗表格、学校注册、移民文件以及任何「27 岁 3 个月 14 天」比仅「27」更精确的设置的标准年龄显示。
合同期限验证
对于自由职业合作、雇佣合同或物业租赁,输入开始和结束日期以确认总天数。与合同规定的期限进行比较以捕捉差一错误(结束日期是包含的还是排除的,对计费很重要)。该工具的「精确日历天数」计算与大多数会计软件使用的约定相匹配。
订阅续订规划
对于年度订阅(SaaS、健身房、杂志),在「加」面板中输入续订日期作为开始,加 365 天(或任何期限),您就有了下一个续订日期。该工具自动处理月末边缘情况(2 月 28 日开始,加 365,得到下一年的 3 月 1 日;在闰年的 2 月 29 日开始,加 365,得到下一年的 2 月 28 日)。
纪念日规划
对于结婚纪念日、创始人日或任何里程碑,使用「加」面板,原始日期作为开始,365(一年)或 3650(十年)作为天数。结果告诉您纪念日落在哪一天和星期几,以便您可以预订餐厅或安排庆祝活动。25 周年和 50 周年里程碑用这种方式很容易计算。
产前安排
妊娠预产期通常是从最后一次月经期起 280 天。输入 LMP 作为开始,加 280,得到 EDD。EDD 的日期信息面板显示星期几,以便您可以计划医院访问。这是一个粗略的估计;医疗保健提供者应通过超声波确认。
常见陷阱
时区(UTC vs 本地)
JavaScript Date 对象代表时间中的时刻,而不是日历日期。当您在日期选择器中选择 2026-05-19 时,浏览器将其解释为本地时间午夜。如果您跨多个时区计算(国际物流、航班时刻表),结果可能会偏差一天。此工具始终使用本地时间,这是大多数个人日历问题的正确选择,但请注意国际背景。
夏令时转换
在遵守夏令时的国家(美国、欧盟、澳大利亚的大部分地区),3 月的一天长 23 小时,11 月的一天长 25 小时。计算跨越夏令时转换的两个日期之间的小时数,结果与日数相差一小时。该工具计算日历天,不是小时,所以夏令时不影响日数结果;如果您以小时为单位测量经过的时间,它会很重要。
闰年边缘情况
如果一年能被 4 整除,则它是闰年,除了世纪(以 00 结尾的年份),它们必须能被 400 整除。所以 2000 年是闰年,1900 年不是,2100 年不会是,2400 年会是。大多数计算器错误假设「能被 4 整除」而没有世纪例外。该工具做得正确,因为 JavaScript 的 Date 原生处理它。
日期数学中的月末歧义
如果您向 1 月 31 日加一个月,得到什么日期?2 月 28 日(或 29 日)是最常见的答案(Excel 这样做),但 3 月 3 日(或 2 日)也是可辩护的(31 天后)。不同的软件产品和法律辖区以不同方式处理。加/减面板使用精确日期计数来规避歧义。如果您需要日历月加法,请明确添加 30 或 31 天。
1582 日历差距
在 1582 年 10 月 4 日和 10 月 15 日之间,公历改革在天主教国家删除了 10 天(在后来采用的国家更多:1752 年英国 11 天,1918 年俄罗斯 13 天)。计算跨越改革的日期需要选择是否使用前推公历(假设新历法始终适用)或历史日期。该工具使用前推公历,这是 JavaScript Date 约定。对于 1582 年之前的家谱或历史研究,请使用专用工具。
工作日因国家而异
在美国,工作日不包括周六、周日和约 11 个联邦假日。在英国,计数相似但有不同的假日(复活节日期、节礼日、夏末银行假日)。在沙特阿拉伯,周末是周五-周六。该工具不计算工作日;它计算日历天。对于工作日数学,请使用知道您国家假日日历的工资或人力资源工具。
隐私和数据处理
所有计算都在您的浏览器中使用 JavaScript 的原生 Date 对象进行。我们不向任何服务器发送您的日期,不记录输入,不放置与计算相关的 cookies。出生日期、合同日期和任何其他敏感的日历数据严格留在您的设备上。重新加载页面,之前的输入就消失了。
页面加载后,该工具可以离线工作。基本日期数学不需要 CDN 库。您可以从网络断开连接,运行年龄计算或截止日期数学,不会有任何东西离开您的设备。
什么时候不使用这个计算器
1582 年之前的天文或历史日期
对于需要用当时使用的历法表达日期的历史研究(早期基督教欧洲的儒略历、伊斯兰和中国历史的农历),请使用专用的日历转换器(Steel Calendar、NASA JPL Horizons)。该工具使用前推公历,对于 1582 年之前的事件会给出不同的答案。
带假日的工作日计算
在计算合同期限、付款截止日期或服务级别协议时钟(按工作日,排除周末和国家特定假日)时,请使用具有国家意识的工具,如 TimeAndDate.com 的工作日计算器,或您公司的人力资源或工资系统。该工具仅计算日历天。
重复事件调度器(每周二、每月)
对于设置日历重复(「每月第二个周二」、「每季度第一个工作日」),请使用 Google Calendar、Apple Calendar 或 Outlook。它们处理 RFC 5545(iCalendar)中的 RRULE 模式,有数十个边缘情况。该工具用于一次性日期数学,而不是管理重复时间表。
跨多个城市的时区转换
对于跨多个时区(纽约、伦敦、东京、悉尼)的会议在某一时刻,请使用专用工具,如 World Clock Meeting Planner。这个计算器以本地时间运行,不进行多区域转换。Absolutool 的 world-clock 工具涵盖该用例。
更多问题
星期几是如何计算的?
JavaScript 的 Date.getDay() 返回一个 0 到 6 的数字(周日到周六)。在内部,引擎使用泽勒同余或类似的查找表算法。手动计算星期几也存在,John Conway 的末日算法让您可以在几秒钟内心算星期几。对于计算机用途,只需依赖 Date API。
计算差异时月份如何计数?
存在几种约定。(1)「整月」计数日期之间的完整月份:2 月 15 日到 4 月 14 日是 1 个月(还不是 2)。(2)忽略日期的月份编号差异:2 月 15 日到 4 月 14 日是 2 个月。(3)总天数除以平均月长度(30.44):2 月 15 日到 4 月 14 日是 58 / 30.44 = 1.91 个月。该工具使用约定(1),这与大多数人谈论年龄和持续时间的方式相符。
什么是 ISO 周数?
ISO 8601 将一年的第 1 周定义为包含第一个周四的周。周从周一开始。所以 2024 年 1 月 1 日(周一)在 2024 年第 1 周,但 2023 年 1 月 1 日(周日)在 2022 年第 52 周。该约定对商业日历很重要,特别是在欧洲,ISO 周数出现在工资单、零售规划和学术安排中。日期信息标签显示 ISO 周数。
我可以计算复活节吗?
不能直接计算。复活节星期日是春分之后第一个满月之后的第一个星期日,使用称为 Computus 的复杂算法计算。该工具不计算复活节。对于任何年份的日期,请在 Wikipedia 的「复活节日期列表」文章中查找年份。由于不同的日历基础,西方和东方(东正教)复活节经常不同。
如何计算两个日期之间的工作日?
粗略估计:总天数,减去周末。(天数 / 7)给出周数;乘以 5 得到工作日,然后加上剩余的工作日。对于包含当地假日的精确数字,请使用国家特定的工作日计算器(TimeAndDate.com 适用于 200 多个国家)。该工具本身计算日历天数;工作日调整由您自己负责。
财年计算呢?
财年运行在每个公司或政府设定的日历上:美国联邦财年是 10 月 1 日到 9 月 30 日,英国个人税年是 4 月 6 日到 4 月 5 日,许多公司使用 1 月到 12 月的日历年。对于财年数学,将财年视为任意 365 天的范围并使用加/减面板进行计算。或使用了解您特定财政定义的专用财务工具。