MiServe DevTools

我的贴纸

把工具固定在这里,会保存在此浏览器中。

日期计算器

计算两个日期之间相隔多久,或在一个日期上加减年、月、周和天。

开始
结束

年、月、日
总天数
周和天
总小时数
工作日(周一至周五)
开始日期
结束日期

在浏览器中运行。粘贴的内容不会被上传。

关于此工具

间隔如何计算

总天数是从开始到结束的确切天数。结束日期本身不计入,所以同一周的周一到周五是四天。年、月、日用日历单位表示同一段时间:先取两个日期之间能容纳的最多整月数,再加上剩余的天数。

工作日统计该范围内的周一至周五,同样不计结束日期。各个国家和地区的法定节假日都不一样,所以不会扣除节假日。

月末规则

各月的天数不同,所以加一个月时,如果目标月份没有这一天,就需要一条规则来处理。这个工具在可能时保留原来的日期,否则停在该月的最后一天:1 月 31 日加一个月是 2 月 28 日,闰年则是 2 月 29 日。每当用到这条规则时,页面都会提示你。

由此带来的一个结果是,按月计算并不总能逆推回去。1 月 31 日加一个月是 2 月 28 日,但 2 月 28 日减一个月是 1 月 28 日。出于同样的原因,计算顺序也很重要:年和月作为一步先计算,然后再加上周和天。

能被 4 整除的年份是闰年,但整百的年份必须能被 400 整除。所以 2000 年有 2 月 29 日,1900 年则没有。

按日历日计算,而不是按本地钟点

本地的一天并不总是 24 小时。在夏令时调整时钟的那几天,一天通常是 23 或 25 小时,如果把两个本地时间戳相减再除以 24 小时,结果可能会少一天。这个工具所有运算都基于 UTC 的日历日期,JavaScript 把这样的每一天都算作正好 24 小时,所以时钟调整永远不会影响结果。你输入的时间被视为不带时区的普通钟点。

周数遵循 ISO 8601:每周从周一开始,第 1 周是包含当年第一个星期四的那一周。因此 1 月初的几天可能属于上一年的最后一周。例如,2027 年 1 月 1 日属于 2026 年第 53 周。

常见问题

天数包含结束日期吗?

不包含。计数从开始日期算起,到结束日期为止但不含结束日期,所以 3 月 1 日到 3 月 2 日是一天。如果需要把两端的日期都算上,请在总数上加一。

为什么 1 月 31 日的一个月后是 2 月 28 日?

2 月没有 31 日,所以结果停在该月的最后一天。闰年则是 2 月 29 日。当目标月份没有这一天时,PostgreSQL、MySQL 和 Java 的 java.time 也采用同样的规则。

工作日会扣除法定节假日吗?

不会。工作日是指该范围内的周一至周五。法定节假日因国家、地区和年份而异,请自行扣除适用于你的那些节假日。

我输入的日期会被发送到别处吗?

不会。计算由浏览器标签页中的 JavaScript 完成,日期也不会被保存。只有你在两种计算方式之间的选择会被保存在此浏览器中。

时间分类的其他工具