“多久”这个问题其实有三层意思:经过了多少时间、日历上隔了多远、以及把某个日期挪动一段时长之后落在哪天。计算器把这三个问题分开来问,而不是甩给你一个巨大的毫秒数。

先选你要的是哪种答案

  • 两个日期之间:算出两个日历日期之间跨了多长。
  • 分解:把一段时长表示成天、时、分、秒或 ISO 8601 形式。
  • 加 / 减:把一个日期按给定时长前后平移,并看到结果那天是星期几、时间戳是多少。

日历上的一天不总等于 24 小时

经过 24 小时永远是 86,400 秒。但“明天的同一个本地时间”在夏令时调表的那天,对应的实际时长就不是 24 小时了。做日程安排、给人看的日期,用选定时区加上懂日历的算术;做测量和延迟统计,用实打实经过的时间。

另一个常见的坑是“含首尾”的天数。1 月 1 日到 1 月 5 日跨过四次零点。如果某条规则要把首尾两天都算进去,就把这一点明确写出来,并且有意识地把端点包含进去。

Frequent questions:

Q: 两个日期之间相差多少天?
A: 按 (结束时间戳毫秒 − 开始时间戳毫秒) / 86,400,000 计算。计算器会同时给出未取整的小数结果和“X 年 Y 个月 Z 天”这样的日历分解。两端可以用不同的时区,底层的计算统一在 UTC 下进行。
Q: 为什么“月”会带小数?
A: 因为一个月在 28 到 31 天之间浮动。“月(平均)”那一行是用经过的毫秒除以 365.2425 ÷ 12 天得到的,这样不同时长之间才好横向比较。想要精确的日历月数,请看右侧“日历分解”列里的“月”。
Q: 它会处理夏令时吗?
A: 会。相减之前,两端会各自按选定的时区换算成 UTC 瞬间,所以区间两侧的夏令时切换都会被自动处理。日历分解的结果,和你按钟面时间手算出来的一致。