使用Moment.js获取指定时间的当日日期时提示无效日期,该如何正确实现?
解决Moment.js解析单独时间字符串返回“无效日期”的问题
嘿,这个坑我之前踩过!你遇到的问题是因为Moment.js的自动解析机制对于单独的时间字符串(比如'18:00')有时候会识别失败——不同环境下的默认解析规则可能不匹配你的输入格式,所以才返回了“无效日期”。
要正确获取包含指定时间的当日日期,有两种靠谱的方法:
方法1:明确指定时间格式
直接在调用moment()时传入第二个参数,告诉它你的时间字符串对应的格式。对于'18:00'这种24小时制的时分格式,对应的格式符是HH:mm:
const time = '18:00'; // 明确指定解析格式,Moment会自动用当日日期补全 const timeAndDate = moment(time, 'HH:mm'); // 打印验证,格式可以自定义 console.log(timeAndDate.format('YYYY-MM-DD HH:mm'));
这样Moment就不会搞混解析规则,稳稳地把当日日期和你指定的时间组合起来。
方法2:直接设置当日的时间
另一种更直观的思路是先获取当前日期,再手动设置小时和分钟,完全避免解析格式的问题:
// 先获取当前时刻,再设置小时为18,分钟为0 const timeAndDate = moment().set({ hour: 18, minute: 0 }); console.log(timeAndDate.format('YYYY-MM-DD HH:mm'));
两种方法都能得到你想要的“当日+指定时间”的日期对象,根据你的习惯选就行啦。
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

