Кажется, что только объект moment() имеет метод isValid() для проверки действительности предоставленных данных. Есть ли эквивалент объекта moment.duration()? Поскольку isValid(), похоже, не существует на длительности.Как проверить продолжительность moment.js?
ответ
Я согласен, что это кажется упущением в момент. У меня появился следующий метод обхода пути, подтверждающий длительность, поскольку у меня была такая необходимость. Понимание заключается в том, что недействительная продолжительность приводит к длительности, которая является точно «P0D». Просто поделитесь этим здесь:
durationIsValid(iso8601DurationString){
if(iso8601DurationString === 'P0D') return true;
return moment.duration(iso8601DurationString).toISOString() !== 'P0D';
}
Надеюсь, это поможет!
Это не сработает, если вы намеренно создаете нулевую длину. Когда момент получает недопустимые единицы времени, по умолчанию он равен нулю. Таким образом, это даст вам ложный отрицательный результат в этом случае. (Текущая версия момента равна 2.20.1 на момент комментария. Надеемся, что в будущей версии будет более надежная проверка продолжительности). Соответствующая проверка находится в этом модуле: https://github.com/moment/moment/blob/develop/src/lib/duration/constructor.js – RobotNerd
Возможно, вы можете использовать ['moment.isDuration (obj);'] (http://momentjs.com/docs/#/durations/is-a-duration/) – VincenzoC
, что вы считаете допустимым? – svarog
moment.duration ('5 моих личных единиц времени') должно быть недействительным, например – schacki