🧰 UtlKit

日期计算器怎么用: 加减天, 周, 月, 年, 两个日期的精确天数差在浏览器

两种模式: 对起始日期加减天, 周, 月, 年, 或两个日期相减得精确天数并由其推出周, 月, 年, 全部在浏览器内计算.

日期计算器有两种模式. 加减模式接收一个起始日期, 一个动作, 一个数量和一个单位, 打印一行: 起始日期, 符号, 数量, 单位, 以及把星期和月份完整拼写出来的着落日期. 日期差模式接收两个日期, 打印两者之间精确的天数, 以及由该天数推出的周, 月, 年. 每个数字都由浏览器内的 Date 对象直接算出, 没有后端, 没有 API 调用. 从日期计算器开始, 保留默认: 起始日期输入 2026-09-24, 保持增加选中的天, 输入 30.

加减模式的结果行

结果行读作起始日期, 符号, 数量, 单位, 等于着落日期: 起始日期按原始 ISO 值打印, 着落日期完整拼写出星期, 月份名和日, 用页面语言. 这个运行例子打印 2026-09-24 + 30 天 = 2026年10月24日星期六. 同一运行在德语页面打印 Samstag, 24. Oktober 2026, 英语页面打印 Saturday, October 24, 2026, 日语页面打印 2026年10月24日土曜日, 因为着落日期通过浏览器区域数据格式化, 而不是固定模板. 动作下拉框翻转符号, 2026-09-24 减 14 天读作 2026年9月10日星期四. 结果旁的复制按钮把整行放进剪贴板.

四个单位

单位下拉框提供天, 周, 月, 年, 两组行为不同. 天和周是天数算术: 周先换算成天, 所以 5 周以 35 天进入, 2026-09-24 加 5 周着落在 2026年10月29日星期四. 月和年是日历算术: 移动月或年字段, 保留日, 所以 2026-09-24 加 3 个月着落在 2026年12月24日星期四. 数量在算术前被截断在 3650 天, 520 周, 120 月和 10 年, 同一十年视野的四种表达, 超出截断的值被削到上限, 所以 3651 天以 3650 进入, 而不是报错.

月和年的溢出

日历算术保留日, 当目标月没有那一天时, 多出的日子溢出到下一个月. 2026年1月31日 加 1 个月, 2026 年 2 月只有 28 天, 多出的 3 天把结果落到 2026年3月3日星期二, 而不是 2 月 28 日. 同样的起始在 2024 年落到 3 月 2 日, 因为那年 2 月有 29 天. 加年对年字段应用同样的规则: 2024年2月29日 加 1 年, 2025 年 2 月没有 29 日, 所以落到 2025年3月1日. 溢出在减的方向同样发生: 2026年3月31日 减 1 个月落到 2026年3月3日, 而 2026年1月31日 减 1 个月干净地落在 2025年12月31日星期三, 因为 12 月有 31 天. 结果行总是打印算出的日期, 所以溢出可见而不是静默. 未来日期指南把同一规则用到截止日期和目标日期问题.

日期差模式

日期差模式接收两个日期, 计算它们之间的绝对毫秒差, 所以两个输入的顺序无关. 天数是毫秒差除以 86400000 再取整, 它是该行唯一精确的数字. 周, 月, 年由天数除以固定除数 7, 30.44 和 365.25 推出, 各自向下取整. 从 2024-01-01 到 2026-07-01 的运行打印 912 天 = 130 周 ≈ 29 月 ≈ 2 年. 近似值有讲究: 按日历数, 2024年1月1日 到 2026年7月1日 恰好 30 个月, 但 912 除以 30.44 是 29.96, 向下取整成 29, 所以月数字是天数的换算, 不是月份的计数. 短跨度, 2026-09-24 到 2026-12-25, 打印 92 天 = 13 周 ≈ 3 月 ≈ 0 年.

日期如何解析

日期输入返回纯 YYYY-MM-DD 字符串, 工具用年, 月, 日组件在本地午夜构造 Date, 而不是解析字符串, 因为纯日期字符串会解析成 UTC 午夜, 在 UTC 以西的每个时区都会早读一天. 从组件构造日期让 2026-09-24 在用户自己的时区保持 2026-09-24, 所以两个日期之间的天数不取决于用户坐在哪里.

它不是什么

日期计算器不是年龄计算器: 对于结束日期固定为今天, 答案是岁, 月, 日年龄的那一个情况, 年龄计算器跑那个分解. 至于纪元秒数, Unix 时间戳转换把同一跨度的日期改写成整数, 天数来自差值除以 86400. 它也不数工作日: 两种模式都数日历日, 包含周末和假日. 关于日期差的工作日一面, 日期差指南讲星期一到星期五的规则和它的边界情况.

相关工具

常见问题

日期计算器会调用任何 API 或服务器吗?

不会. 它把每个日期输入解析成本地午夜的 Date, 用浏览器 Date 方法做天, 月或年的算术, 再用浏览器 Intl 数据按页面语言格式化着落日期. 日期差模式是一次毫秒减法加四次除法. 你输入的内容不会离开页面.

为什么 1 月 31 日加 1 个月落在 3 月 3 日而不是 2 月 28 日?

加月保留日, 当目标月没有那一天时, 多出的日子溢出到下一个月, 而不是截断到月末. 2026 年 2 月有 28 天, 所以 1 月 31 日加 1 个月是 2 月结束后的第 3 天, 即 3 月 3 日. 同样的起始在 2024 年落到 3 月 2 日, 因为那年 2 月有 29 天, 2 月 29 日加 1 年落在非闰年的 3 月 1 日. 结果行打印算出的日期, 所以溢出可见.

为什么日期差模式的月和年看起来是近似, 而天数是精确的?

因为推导方式不同. 天数是毫秒差除以 86400000 再取整, 所以精确. 周, 月, 年用固定数 7, 30.44 和 365.25 除天数并向下取整, 所以是天数的换算, 不是日历计数. 这就是 912 天打印成 130 周, 约 29 月和约 2 年的原因, 尽管按日历 2024年1月1日 到 2026年7月1日 恰好 30 个月.

日期输入按什么时区读取?

你自己的时区. 工具用年, 月, 日组件在本地午夜构造每个日期, 而不是解析 ISO 字符串, 因为纯日期字符串解析成 UTC 午夜, 在 UTC 以西会早读一天. 两个日期之间的天数在任何时区相同, 着落日期按页面语言拼写.

日期差里周末和假日算吗?

算. 两种模式都数日历日, 所以周一到周一的跨度是 7 天, 中间有没有周末都一样. 只数工作日, 或排除公共假日, 是另一套规则, 有自己的边界情况, 日期差指南覆盖那个版本的问题.

相关文章