我有一个输入支持,以秒为单位选择日期时间选择器。我使用momentjs将值从输入转换为日期时间格式。
当我在这样的输入中输入值时:
22-09-2019 15:ppp15:33
22-09-2019 1xx5:15:33
22-09-2019 15:15:test33
Moment对象仍然显示isValid。 您能解释为什么在这种情况下isValid为true吗?我该如何验证小时/分钟/秒呢?
答案 0 :(得分:1)
您必须使用严格模式parsing:
Moment的解析器非常宽容,这可能导致不希望的/意外的行为。
从版本 2.3.0 开始,您可以为最后一个参数指定布尔值,以使Moment使用严格的解析。严格的解析要求格式和输入要完全匹配,包括分度符。
另请参见Strict Mode指南,此处为实时示例:
['22-09-2019 15:ppp15:33',
'22-09-2019 1xx5:15:33',
'22-09-2019 15:15:test33',
'22-09-2019 15:15:33'].forEach((item) => {
console.log(item, moment(item, 'DD-MM-YYYY HH:mm:ss', true).isValid() );
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>