moment.js isValid function not working properly
I have this question... I haven't found anything similar and it also seems very strange that nobody had this problem validating time with moment.js.
moment('03:55', 'HH:mm').isValid(); //true
moment('03:55jojojo', 'HH:mm').isValid(); //true
moment('03:55jojojo', 'HH:mm',true).isValid(); //true
Am I doing something wrong? Here is an example:
http://jsfiddle.net/vCGAp/145/
Solution 1:
In your question you write that moment('03:55jojojo', 'HH:mm',true).isValid();
returns true. This is incorrect. Please check your jsfiddle again.
From http://momentjs.com/docs/
Moment's parser is very forgiving, and this can lead to undesired behavior. As of version 2.3.0, you may specify a boolean for the last argument to make Moment use strict parsing. Strict parsing requires that the format and input match exactly.
moment('It is 2012-05-25', 'YYYY-MM-DD').isValid(); // true
moment('It is 2012-05-25', 'YYYY-MM-DD', true).isValid(); // false
moment('2012-05-25', 'YYYY-MM-DD', true).isValid(); // true
You can use both language and strictness.
moment('2012-10-14', 'YYYY-MM-DD', 'fr', true);
Solution 2:
Sorry to necro this 5 year old question, but I indeed stumbled upon a case where monent is not working properly towards the documentation, using version 2.24.0.
In the picture we can see that for example H
should only evaluate to 0 - 23
, but if I use moment('01', 'H', true).isValid()
I still get true
.
Here is the jsfiddle: https://jsfiddle.net/wofgst5v/