检查时间格式在moment.js中是否有效

时间:2014-08-10 22:05:20

标签: javascript momentjs

moment.js可以根据给定的格式设置时间格式。

但有些格式似乎无效。例如,website提供YYYY [escaped] YYYY格式。但是,当一个人指定YYYY [escape时,时间格式为2014 [121campe,明确表示es根据格式指南进行转换,但格式无效。< / p>

有没有办法检查提供的格式是否有效,例如是否会在结果字符串中显示某些方面(例如format.containsHours,请注意,如果不是HH,则此选项也应返回true格式字符串,但例如LLLL将隐式打印小时数。)

到目前为止,我在文档中找不到任何内容。

3 个答案:

答案 0 :(得分:1)

Moment的验证函数仅限于根据给定格式验证给定的日期/时间输入字符串是否有效。假设开发人员已知格式。它并不打算从可变来源(例如最终用户)接受格式字符串本身。

所以不,没有确认格式字符串有效的方法。

答案 1 :(得分:1)

这可行:

function isValidDate(date) {
   return (moment(date).toDate().toString() !== "Invalid Date")
}

答案 2 :(得分:1)

使用此功能

function checkIfDateIsValidUsingMoment(dateString,format)
{
  var m=moment(dateString,format);
  return m._pf.charsLeftOver ==0 && m._pf.unusedTokens.length==0 && m._pf.unusedInput.length==0 && m.isValid();
}

上面的函数采用了日期字符串和格式,Moment对象有isvalid方法,但它不太适用于严格的日期验证。

Moment对象有_pf,它存储有关已解析日期的信息。

charsLeftOver:不匹配的字符(表示额外字符,无效日期)

unusedInput:包含有关未使用输入的详细信息的数组

unusedTokens:包含有关未使用令牌的详细信息的数组

例如:

moment("25 october 2016aaaa","DD MMM YYYY")

这个对象有&#34; aaaa&#34;作为无效字符,因此可在_pf对象

中使用

您可以使用这些详细信息验证日期。