使用dayjs反向计算两个时间的差值并转换为分钟的实现方法
时间差计算实现方案
核心逻辑说明
你提到的示例输出780对应13:00和00:00两个时间的分钟差绝对值,若需要计算跨天的单向间隔(比如当日13点到次日0点的时间差),也可通过调整逻辑实现。
基于dayjs实现
dayjs的diff方法本身支持分钟维度计算,只需要给两个时间拼接同一个无意义的基准日期,消除日期维度的影响即可:
import dayjs from 'dayjs' function getTimeDiffMinute(time1, time2) { // 拼接同一基准日期,避免日期干扰计算结果 const t1 = dayjs(`2000-01-01 ${time1}`) const t2 = dayjs(`2000-01-01 ${time2}`) // 取绝对值即可得到示例要求的780输出 return Math.abs(t2.diff(t1, 'minute')) // 如果需要计算从time1到time2的跨天单向间隔(当日13点到次日0点返回660),替换上面的return为以下代码: // const diff = t2.diff(t1, 'minute') // return diff < 0 ? diff + 1440 : diff } // 测试 console.log(getTimeDiffMinute('13:00', '00:00')) // 输出780 console.log(getTimeDiffMinute('13:30', '13:45')) // 输出15
原生JS实现(无依赖)
如果不想引入额外依赖,可以直接把时间转换为当日总分钟数后计算:
function getTimeDiffMinute(time1, time2) { // 把HH:mm格式的时间转换为当日0点以来的总分钟数 const convertToMinute = (timeStr) => { const [hour, minute] = timeStr.split(':').map(Number) return hour * 60 + minute } const t1Min = convertToMinute(time1) const t2Min = convertToMinute(time2) // 取绝对值得到示例结果 return Math.abs(t2Min - t1Min) // 跨天单向间隔实现替换为: // const diff = t2Min - t1Min // return diff < 0 ? diff + 1440 : diff } // 测试 console.log(getTimeDiffMinute('13:00', '00:00')) // 输出780 console.log(getTimeDiffMinute('09:15', '17:45')) // 输出510
内容的提问来源于stack exchange,提问作者arena
相关产品推荐
相关产品推荐

