如何验证moment.js持续时间?

时间:2016-08-01 07:16:21

标签: momentjs duration

似乎只有一个moment()对象有一个isValid()方法来检查提供的数据的有效性。 moment.duration()对象有没有等价物?因为isValid()在持续时间上似乎不存在。

3 个答案:

答案 0 :(得分:1)

我同意这似乎是一个遗漏。由于我有需要,我已经提出了以下解决方法来验证持续时间。洞察力是无效的持续时间,导致持续时间恰好为'P0D'。在这里分享一下:

durationIsValid(iso8601DurationString){
  if(iso8601DurationString === 'P0D') return true;
  return moment.duration(iso8601DurationString).toISOString() !== 'P0D';
}

希望这有帮助!

答案 1 :(得分:0)

在进行ISO8601解析的情况下,建议尝试使用moment.duration(myIso8601Duration)进行解析,使用toISOString从中再次获取ISO8601字符串,然后将其与myIso8601Duration进行比较。如果它们不同,则输入可能无效。

答案 2 :(得分:0)

我使用的是 Moment 2.29。很容易测试有效性如果您的用例具有持续时间的最小有效长度。例如,dur.isValid() && dur.as("minutes") >= 1 涵盖印刷错误、使用 NaN 作为数字输入、传递无效的 ISO8601 字符串等,因为所有这些情况都会导致持续时间为零。 (如果零长度持续时间实际上对您的用例有意义,请查看其他答案以获得指导……但它们可能没有。)