You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 18:36:04