如何将"11:00 to 12:00"转为"11:00 am to 12:00 pm"格式
纯时间段字符串添加am/pm后缀实现方案
你之前尝试的ISODateString转换方法只适配带年月日、时区信息的标准ISO日期格式,当前输入是无日期信息的纯时间段字符串,硬套日期解析逻辑会出现无效日期、时区偏差等问题,直接做字符串拆分处理即可,不需要依赖日期对象做多余解析。
核心实现逻辑
- 用
to作为分隔符,把原始字符串拆成起始时间、结束时间两个独立片段 - 对每个时间片段,提取冒号前的小时值转成数字判断后缀:小时值小于12加
am后缀,大于等于12加pm后缀 - 处理特殊值边界:0点要转成12点加am后缀,12点保持原值加pm后缀
- 把加完后缀的两个时间片段用
to重新拼接,得到最终结果
代码示例(JavaScript)
function formatTimeRange(timeStr) { const [startTime, endTime] = timeStr.split(' to '); const addAmPmSuffix = (time) => { const [hourStr, minuteStr] = time.split(':'); const hour = Number(hourStr); const suffix = hour >= 12 ? 'pm' : 'am'; const displayHour = hour === 0 ? 12 : hour; return `${displayHour.toString().padStart(2, '0')}:${minuteStr} ${suffix}`; }; return `${addAmPmSuffix(startTime)} to ${addAmPmSuffix(endTime)}`; } // 测试调用 console.log(formatTimeRange("11:00 to 12:00")) // 输出结果:11:00 am to 12:00 pm
该逻辑同时兼容24小时制时间转换,比如输入"13:45 to 00:15"会输出"01:45 pm to 12:15 am",如果不需要小时数补前导零,删掉
padStart相关逻辑即可。
内容的提问来源于stack exchange,提问作者Prashant
相关产品推荐
相关产品推荐

