如何在不使用Date的情况下用jQuery将时间字符串转换为秒?
不用Date对象转换时间字符串为秒的方案
当然可以实现!其实我们不需要依赖Date对象,完全可以通过手动解析时间字符串的各个部分来计算总秒数——jQuery在这里主要是帮我们更方便地遍历数组,核心逻辑是原生JavaScript的字符串处理和简单数学运算。
下面是具体的实现步骤和代码示例:
核心思路
- 遍历数组中的每个时间字符串
- 拆分出时间部分(比如
8:00)和时段标识(AM/PM) - 将时间拆分为小时和分钟,转换为数字类型
- 处理12小时制转24小时制的特殊规则:
12AM对应0点,其他AM时段的小时保持不变12PM保持12点,其他PM时段的小时加12
- 计算总秒数:
小时数*3600 + 分钟数*60
代码实现
const timeArray = ["8:00AM", "1:00PM", "12:00PM", "12:00AM"]; // 定义单个时间字符串转秒的函数 const convertToSeconds = (timeStr) => { // 用正则匹配分离时间和AM/PM标识 const matchResult = timeStr.match(/([0-9:]+)(AM|PM)/); const [time, period] = matchResult.slice(1); // 拆分小时和分钟并转为数字 const [hours, minutes] = time.split(':').map(Number); // 调整小时为24小时制 let adjustedHours = hours; if (period === 'AM') { adjustedHours = hours === 12 ? 0 : hours; } else { adjustedHours = hours === 12 ? 12 : hours + 12; } // 计算总秒数 return adjustedHours * 3600 + minutes * 60; }; // 用jQuery的map方法批量处理数组 const secondsArray = $.map(timeArray, convertToSeconds); console.log(secondsArray); // 输出结果: [28800, 46800, 43200, 0]
补充说明
如果你不想依赖jQuery,直接用原生JavaScript的Array.prototype.map也能达到同样效果,只需要把最后一行改成:
const secondsArray = timeArray.map(convertToSeconds);
逻辑完全一致,只是遍历数组的方式不同而已。
内容的提问来源于stack exchange,提问作者vikas kumar
相关产品推荐
相关产品推荐

