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

如何将字符串格式时间转为timestamp 计算JavaScript中的日期时间差

JavaScript时间字符串差值计算方案

实现逻辑

将时间字符串转换为Date对象获取时间戳,二者相减得到毫秒差值后,按需求换算为对应单位即可,无需手动拆分字符串提取时分秒。

通用实现代码

/**
 * 计算两个时间字符串的差值
 * @param {string} startStr 起始时间,支持"YYYY-MM-DD HH:mm:ss"或"HH:mm:ss"格式
 * @param {string} endStr 结束时间,格式同起始时间
 * @returns {number} 差值分钟数(结束时间早于起始时间时返回负数)
 */
function calcTimeDiffMinutes(startStr, endStr) {
  // 仅有时分秒的字符串补充统一日期前缀,避免Date解析失败
  const datePrefix = '1970-01-01 '
  const startTime = new Date(startStr.includes('-') ? startStr : datePrefix + startStr)
  const endTime = new Date(endStr.includes('-') ? endStr : datePrefix + endStr)
  // 毫秒差转换为分钟数,四舍五入处理秒级误差
  const diffMs = endTime.getTime() - startTime.getTime()
  return Math.round(diffMs / (1000 * 60))
}

测试用例

  • 测试时分秒场景:执行calcTimeDiffMinutes("18:30:00", "20:00:00"),返回结果为90,匹配需求
  • 测试完整时间场景:执行calcTimeDiffMinutes("2021-04-22 19:32:00", "2021-04-22 21:02:00"),返回结果为90

拓展说明

如果需要返回其他单位的差值,调整换算公式即可:

  • 秒级差值:Math.round(diffMs / 1000)
  • 小时级差值:(diffMs / (1000 * 60 * 60)).toFixed(2)
    如果需要忽略正负只取差值绝对值,将返回结果包裹Math.abs()即可。

内容的提问来源于stack exchange,提问作者J.G.Sable

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:06:04