如何在Moment.js中由时分时间字符串生成含秒的完整时间字符串?
解决Moment.js解析时分字符串返回Invalid date的问题
哈哈,我之前也踩过这个坑!问题根源在于你直接把'19:39'这类仅含时分的字符串传给moment()时,Moment.js没法自动识别这个特定格式,导致解析失败返回Invalid date。解决办法很简单——明确告诉Moment你的输入时间格式是什么。
正确的实现步骤
- 用
moment()的第二个参数指定输入时间的格式(这里是24小时制的时分格式HH:mm) - 再用
format('HH:mm:ss')格式化输出,就能自动补全秒数为00了
代码示例
// 你的原始时分字符串 const inputTime = '19:39'; // 指定解析格式后再格式化 const fullTime = moment(inputTime, 'HH:mm').format('HH:mm:ss'); console.log(fullTime); // 输出: '19:39:00'
额外说明
- 如果你的时间是12小时制(比如
'07:39 PM'),只要把解析格式改成hh:mm A就可以了,格式化时同样用HH:mm:ss就能转成24小时制的完整时间。 - 始终指定解析格式是个好习惯,能避免不同系统locale差异导致的解析错误,尤其在Moment.js 2.0+版本中这个方式非常稳妥。
内容的提问来源于stack exchange,提问作者Hubert Kubiak
相关产品推荐
相关产品推荐

