momentjs没有验证小时/分钟/秒

时间:2019-02-22 06:34:10

标签: javascript momentjs

我有一个输入支持,以秒为单位选择日期时间选择器。我使用momentjs将值从输入转换为日期时间格式。

当我在这样的输入中输入值时:

22-09-2019 15:ppp15:33
22-09-2019 1xx5:15:33
22-09-2019 15:15:test33

Moment对象仍然显示isValid。 您能解释为什么在这种情况下isValid为true吗?我该如何验证小时/分钟/秒呢?

我在角度5中使用了ng-pick-datetime库。 enter image description here enter image description here

1 个答案:

答案 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>