基于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
相关产品推荐
相关产品推荐

