使用MomentJS验证日期格式(不是日期字符串)?

时间:2017-06-16 18:30:07

标签: validation date datetime format momentjs

我已经看到你可以使用“.isValid()”函数来检查给定的字符串是否为日期格式:

moment('2007-05-05', 'YYYY-MM-DD', true).isValid()

但有没有办法确认格式是否正确?例如:

'YYYY-MM-DD'应该返回true,但

'YYYY-MM-DDsadsadl'应该返回false,因为字符串末尾的字符不是有效的DateTime字符。

我们正在开发一种工具,允许用户输入现有的日期格式,然后输入第二个输入以输入所需的格式,但我们需要验证以确保字符串可以正确解析和转换,但它们不是'输入特定日期。

应用程序必须接受任何所有可能的日期格式。

2 个答案:

答案 0 :(得分:2)

使用以下功能验证您的格式。

validFormat = function(inputFormat){
  var validation = moment(moment('2017-06-17').format(inputFormat)).inspect(); 
  if(validation.indexOf('invalid') < 0) 
    return true; 
  else 
    return false;
}

花一些时间来理解这一点。这只是使用inspect()进行反向验证。日期2017-06-17可以由任何有效日期替换。 这个Moment Js Docs将帮助您识别有效格式。

只需调用此函数

即可
validFormat('YYYY MM DD')

答案 1 :(得分:0)

const getIsValid = inputFormat => moment(moment().format(inputFormat)).isValid()

说明:

moment().format(inputFormat)-使用该格式从当前时间创建日期字符串

然后用moment()包裹它,使该字符串成为moment日期对象。最后,我们在该isValid()日期对象上调用moment属性。