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

基于HH:MM格式计算两个时间点的总时长

计算AM/PM格式时间点的总时长

嘿,这个问题挺常见的,我来给你拆解一下怎么快速算出这两个时间的间隔~

核心思路

我们需要先把AM/PM格式的字符串时间转换成JavaScript的Date对象,利用Date对象的差值计算能力来得到时长,再转换成我们需要的单位(小时/分钟)。

具体步骤

  • 第一步:将时间字符串转为Date对象
    直接处理字符串时间不方便计算,我们可以给两个时间绑定同一个基准日期(比如当天),这样创建出来的Date对象只会有时分的差异,不会受日期影响:

    const response = { startTime: '09:00 AM', endTime: '02:00 PM' };
    // 取当天日期作为基准,确保两个时间在同一天
    const baseDate = new Date();
    const startDate = new Date(`${baseDate.toDateString()} ${response.startTime}`);
    const endDate = new Date(`${baseDate.toDateString()} ${response.endTime}`);
    
  • 第二步:计算时间差并转换单位
    两个Date对象相减会得到毫秒级的差值,我们可以把它转换成小时或者分钟:

    // 计算毫秒差值
    const diffMs = endDate - startDate;
    // 转换成小时(1小时 = 1000毫秒 * 60秒 * 60分钟)
    const totalHours = diffMs / (1000 * 60 * 60);
    // 如果需要分钟数的话
    const totalMinutes = diffMs / (1000 * 60);
    
    console.log(`总时长:${totalHours}小时`); // 这里会输出「总时长:5小时」
    
  • 额外处理:跨天场景
    如果你的业务里存在跨天的时间(比如startTime是10:00 PM,endTime是02:00 AM),上面的方法会得到负数差值,这时候可以判断后补24小时:

    let totalHours = diffMs / (1000 * 60 * 60);
    if (totalHours < 0) {
      totalHours += 24;
    }
    

内容的提问来源于stack exchange,提问作者Jordan Davis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:27:17