小时次数计算器_计算两个时间点之间间隔小时数与排程次数

小时次数计算器算的是两段时间点之间隔了几个小时,并顺着你给的间隔(比如每 2 小时一次)算出能排多少次。它用 UTC 时间戳相减,绕开本地时区,跨午夜、跨日期都不会算错。

时间框或间隔框按回车都会立即重算;打开就带一组示例(09:00 到 17:00、每 2 小时一次)。下方对照表默认显示 12 行,点「加载更多」看余下 2 行。

使用方法

  1. 打开页面就有一组完整结果:开始 09:00、结束 17:00、间隔 2 小时,结果区已经给出时长 8 小时与可排 4 次,不需要先填任何东西。
  2. 把开始、结束改成你要算的两个时间点,可以跨午夜(例如 22:00 到 06:00 算作次日 8 小时),也可以只填同日时段;间隔填你想要的排程步长,例如 0.5 表示每半小时一次。
  3. 任意一个输入框按回车都会立即重新计算;也可以直接点「立即计算」。结果区两行是当场算出来的,不是固定文案。
  4. 结果区第一行是「起 → 止 时长 X 小时」,第二行是「按间隔 Y 小时排程,可排 N 次」,N 是向下取整,不会把排不下的零头算成一次。
  5. 「复制结果」复制整段文字,「复制对照表」复制下面那张例表的制表符分隔版本,「导出 CSV」保存成带字节序标记的文件,Excel 双击不乱码。
  6. 本页不联网、不写本地存储,刷新即回到默认示例,所有数字都在你自己的浏览器里算。

这个小时次数计算器能解决什么

小时次数计算器解决的是「这段时间能排几件事」的问题。排班、定闹钟、安排设备巡检、给直播间拆时段,本质都是先知道总时长,再按固定步长数出能放多少个槽位。

第一类用途是排班与巡检。保安两班倒、机器每 3 小时巡检一次、药每 4 小时吃一次——只要给起止时间和间隔,立刻知道一个班次里能排几班、能巡检几次,不用拿钟表数。

第二类用途是跨午夜与跨天。手写容易在「22:00 到 06:00 到底几小时」上栽跟头,本页把结束早于开始的情况自动当作跨到第二天,并支持日期跨度(例如 1 号 9 点到 3 号 17 点),长跨度也不会算错。

第三类用途是校验预期。你心里估计「每 2 小时一次、8 小时能排 4 次」,页面会如实给出 4 次;如果间隔改成 3 小时,8 小时只能排 2 次(剩下 2 小时不够再排一次),这种零头处理一目了然。

值得一提,本页不会把你的时段或排班数据上传到任何服务器,整个解析与计数都只在你自己的设备上发生。你即便把含敏感信息的排班表、工时记录粘进来,计算过程也不会离开本机,这与需要把文本发到云端处理的在线工具完全不同,因此更适合处理内部排班、巡检工时这类不宜外传的数据。结果区的数字都会保留两位小数,复制出去直接能进表格或文档。

时长与排程次数的原理

本页先用 Date.parse 把「开始」和「结束」解析成 UTC 时间戳(毫秒),再相减除以 3600000 得到小时数。关键在于统一用 UTC,避免浏览器本地时区把同一个钟点解读成不同毫秒数,从而保证 09:00 到 17:00 永远是 8 小时,无论你在哪个时区打开页面。

跨午夜的处理很直接:如果解析出的结束时间戳不大于开始时间戳,就给结束再加一整天(24 × 3600000 毫秒),于是 22:00 到 06:00 变成 22:00 到次日 06:00,差值为 8 小时。跨多天则直接靠真实的日期差,时间戳相减天然支持。

排程次数 = 向下取整(时长 ÷ 间隔)。这是一个整数,代表「完整放下」的槽位数;余下的不足一个间隔的零头不计入,避免给你一个排不下的半次。下面的变量表把每一项写清楚。

变量含义处理影响
开始起始时间点解析为 UTC 时间戳决定时长起点
结束终止时间点早于开始则加一天跨午夜自动顺延
时长两者相差差值 ÷ 3600000结果保留两位小数
间隔排程步长必须大于 0越小次数越多
次数可排槽位向下取整(时长÷间隔)零头不计入

完整示例

默认示例是开始 09:00、结束 17:00、间隔 2 小时。两者都解析成同一天的 UTC 时间戳,差值 8 小时;次数 = 向下取整(8 ÷ 2)= 4 次。也就是说从 09:00 起,每隔 2 小时排一次,可以落在 09:00、11:00、13:00、15:00、17:00——其中 17:00 是终点不算新槽位,所以可排 4 次。

09:00 → 17:00 时长 8.00 小时
按间隔 2.00 小时排程,可排 4 次

把示例改成开始 22:00、结束 06:00、间隔 2 小时,结束早于开始会被顺延到次日,时长仍是 8 小时,可排同样是 4 次;若间隔改成 3 小时,则 8 ÷ 3 = 2.67,向下取整得 2 次,余下的 2 小时不够再排一次。

时间间隔对照表

下表共 14 行,给出几组常见起止与对应时长,含跨午夜、跨天和「分钟折算成小时」的例子。前 12 行默认显示,点工具区的「加载更多」看余下 2 行。所有时长都按「UTC 时间戳相减 ÷ 3600000」得出,与结果区的算法一致。

开始结束时长
09:0017:008.00 小时
22:0006:008.00 小时
23:3000:150.75 小时
01-01 09:0001-03 17:0056.00 小时
90 分1.50 小时
45 分0.75 小时
08:3012:304.00 小时
14:0014:450.75 小时
20:0023:303.50 小时
00:0006:006.00 小时
13:1518:455.50 小时
07:0007:300.50 小时
10:0010:200.33 小时
19:0021:002.00 小时

横向读这张表能看出两条经验:分钟要先除以 60 折算成小时(90 分 = 1.5 小时,45 分 = 0.75 小时),别直接拿分钟当小时用;跨午夜只要结束早于开始就会被顺延一天,所以 22:00 到 06:00 和 09:00 到 17:00 一样是 8 小时。

结果边界与错误提示

常见问题

为什么要用 UTC 时间戳相减?

因为直接用本地时间相减会被浏览器的时区偏移干扰,同一个钟点在冬令时和夏令时可能差出一小时。统一解析成 UTC 时间戳后,09:00 到 17:00 永远是 8 小时,与时区无关,结果才稳。

22:00 到 06:00 为什么是 8 小时?

结束时间 06:00 早于开始 22:00,本页判定为跨到第二天,于是结束被顺延 24 小时变成次日 06:00,与 22:00 相差正好 8 小时,符合常识。

次数怎么会是 2 而不是 3?

次数 = 向下取整(时长 ÷ 间隔)。8 小时按 3 小时间隔得到 2.67,取整为 2,余下的 2 小时不够再排一次,所以不算。这是「完整槽位」的口径,不是四舍五入。

间隔能填小数吗?

能。间隔接受 0.25、0.5、1.5 这类小数,代表每 15 分钟、半小时、一个半小时一次;下限 0.25 小时、上限 24 小时,超过范围会提示你重新填写。

分钟怎么折算成小时?

除以 60。90 分钟 = 1.5 小时,45 分钟 = 0.75 小时,页面里的「90 分」「45 分」两行就是直接折算的结果,别把分钟当小时用。

跨好几天怎么算?

只要起止是真实日期跨度(例如 1 号 9 点到 3 号 17 点),UTC 时间戳相减天然包含整天,结果 56 小时;纯时间输入(无日期)只在同一天或顺延一天的范围内处理。

为什么结果不带「次」以外的单位?

时长一律以「小时」为单位并保留两位小数,次数则是纯整数,这样和对照表、复制结果都保持一致,便于你直接拿去排班表或文档里用。

导出的 CSV 为什么会带字节序标记?

带字节序标记(BOM)是为了让 Excel 双击打开时正确识别 UTF-8,不会把中文显示成乱码;「复制对照表」则是纯文本制表符分隔,粘进表格软件同样会自动分列。

相关工具