2016-08-01 8 views
2

Кажется, что только объект moment() имеет метод isValid() для проверки действительности предоставленных данных. Есть ли эквивалент объекта moment.duration()? Поскольку isValid(), похоже, не существует на длительности.Как проверить продолжительность moment.js?

+0

Возможно, вы можете использовать ['moment.isDuration (obj);'] (http://momentjs.com/docs/#/durations/is-a-duration/) – VincenzoC

+0

, что вы считаете допустимым? – svarog

+0

moment.duration ('5 моих личных единиц времени') должно быть недействительным, например – schacki

ответ

1

Я согласен, что это кажется упущением в момент. У меня появился следующий метод обхода пути, подтверждающий длительность, поскольку у меня была такая необходимость. Понимание заключается в том, что недействительная продолжительность приводит к длительности, которая является точно «P0D». Просто поделитесь этим здесь:

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

Надеюсь, это поможет!

+0

Это не сработает, если вы намеренно создаете нулевую длину. Когда момент получает недопустимые единицы времени, по умолчанию он равен нулю. Таким образом, это даст вам ложный отрицательный результат в этом случае. (Текущая версия момента равна 2.20.1 на момент комментария. Надеемся, что в будущей версии будет более надежная проверка продолжительности). Соответствующая проверка находится в этом модуле: https://github.com/moment/moment/blob/develop/src/lib/duration/constructor.js – RobotNerd

 Смежные вопросы

  • Нет связанных вопросов^_^