用moment.js检查日期格式

ris*_*shi 11 javascript date date-format momentjs

我正在从我的屏幕中的日历中获取此类型的输入

DD-MMM-YYYY HH:mm a
Run Code Online (Sandbox Code Playgroud)

但是用户可以从键盘提供日期.现在我必须检查用户是否以正确的格式提供了日期.我在我的应用程序中大量使用moment.js并像这样验证它

 if(angular.equals(moment(scope.modelValue).format('DD-MMM-YYYY HH:mm a'), 'Invalid date'))
{
       alert('date is not correct');

}
else
{
alert('date is correct');
}
Run Code Online (Sandbox Code Playgroud)

它工作正常,但问题是如果我提供像'18 -Feb-2015 2'这样的输入,那么它将被转换为'18 -Feb-2015 00:00 am'.那么现在如何检查格式是否正是我想要的?请帮忙 ..

wal*_*lop 21

如果它只是为了检查下面是一个更好的选择

moment(scope.modelValue, 'DD-MMM-YYYY HH:mm a', true).isValid()
Run Code Online (Sandbox Code Playgroud)

  • 如果您希望 Moment 与该确切格式匹配,则应处于严格模式。这是通过传入 `true` 作为第三个参数来完成的。 (3认同)
  • @JoshRickert仅适用于2.3及以上版本. (2认同)

小智 20

要检查日期格式,您可以使用:

moment(checked_date, DATE_FORMAT).format(DATE_FORMAT) === checked_date
Run Code Online (Sandbox Code Playgroud)

  • 1.看起来这是一个字符串比较.在这种情况下,日期和月份中的前导零将不起作用.**例如03年1月1日至18日对3月1日**.另外,最好使用_moment(checked_date,DATE_FORMAT).isValid()_来检查特定格式. (4认同)