2016-08-01 19 views
2

Es scheint, als ob nur ein moment() - Objekt eine isValid() - Methode hat, um die Gültigkeit der bereitgestellten Daten zu überprüfen. Gibt es für den Moment ein gleichwertiges .duration() Objekt? Weil isValid() nicht auf Dauer existiert.Wie validiere ich eine moment.js Dauer?

+0

Vielleicht können Sie ['moment.isDuration (obj);] (http://momentjs.com/docs/#/durations/is-a-duration/) verwenden – VincenzoC

+0

Was halten Sie für eine gültige Dauer? – svarog

+0

moment.duration ('5 meiner persönlichen Dauereinheiten') sollte ungültig sein, zum Beispiel – schacki

Antwort

1

Ich stimme zu, das scheint eine Unterlassung in Moment zu sein. Ich habe die folgende Problemumgehungsmethode zur Validierung von Dauern entwickelt, seit ich die Notwendigkeit hatte. Die Erkenntnis ist, dass eine ungültige Dauer eine Dauer ergibt, die genau "P0D" ist. Teilen Sie das hier nur:

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

Hoffe, das hilft!

+0

Dies funktioniert nicht, wenn Sie absichtlich eine Dauer nullter Länge erstellen. Wenn der Moment ungültig wird, wird die Einheit auf Null gesetzt. Das wird Ihnen in diesem Fall ein falsches Negativ geben. (Die aktuelle Momentversion ist 2.20.1 zum Zeitpunkt dieses Kommentars. Hoffentlich wird es in einer zukünftigen Version eine bessere Gültigkeitsdauer geben). Die relevante Validierung befindet sich in diesem Modul: https://github.com/moment/moment/blob/develop/src/lib/duration/constructor.js – RobotNerd