JavaScript使用for循环生成00:00~24:00每3分钟间隔时间列表
需求说明
需要生成范围为00:00 ~ 24:00、间隔3分钟的格式化时间字符串数组,最终效果形如["00:00", "00:03", "00:06", ..., "24:00"]。
原有实现仅能生成整点时间项,代码如下:
let arr = [] for (let i = 0; i < 25; i++) { let j = 19 let str = i.toString() arr[j*i] = str.padStart(2, '0') + ':00' } console.log('arr', arr)
该实现未覆盖00:03~00:57这类间隔3分钟的非整点时间,且通过固定偏移量给数组指定索引赋值的方式容易产生稀疏数组,逻辑冗余。
实现方案
不需要单独区分整点、非整点逻辑,直接以「总分钟数」为遍历维度,步长设为3分钟逐次生成时间字符串即可,逻辑更简洁不易出错。
完整可运行代码:
const timeList = [] // 从0分钟(00:00)开始遍历,每次递增3分钟,直到1440分钟(24:00)终止 for (let totalMinutes = 0; totalMinutes <= 24 * 60; totalMinutes += 3) { // 换算当前小时、分钟值 const currentHour = Math.floor(totalMinutes / 60) const currentMinute = totalMinutes % 60 // 补前导零后拼接为标准时间格式 const formatTime = `${currentHour.toString().padStart(2, '0')}:${currentMinute.toString().padStart(2, '0')}` timeList.push(formatTime) } console.log(timeList)
逻辑说明
- 遍历步长固定为3分钟,自动覆盖所有整点、3分、6分……57分的时间节点,不需要单独写插入非整点项的逻辑
- 小时值通过总分钟数除以60取整计算,分钟值通过总分钟数对60取余计算,换算逻辑无遗漏
- 循环终止条件设为
<= 1440(24*60=1440分钟),可以完整包含最后一个24:00节点 - 最终生成的数组共481项,不存在空索引,可直接使用
内容的提问来源于stack exchange,提问作者muki
相关产品推荐
相关产品推荐

