Comments (6)
I just got burned by this. In my case, I don't really care about the date format, as long as it can be parsed by Date.parse(), so I do this:
var someDate = Date.parse(someDate); // This never throws
if (!isNaN(someDate)) {
someDate = new Date(someDate); // This won't throw as long as someDate is not NaN
}
I'm not sure how robust Date.parse is, but unless you want a whole custom date parser with format strings, or depend on an existing date parser library (I'm not aware of anything except maybe Date.js), I think it's best to just let the value run through Date.parse, and make sure it's a non-NaN value.
from validator.js.
So, I added the test that sort of addresses this problem. You can see in my next commit (b6a2950) passes the test (but is broken in other ways). I didn't do the pull request because this way of validating dates is ridiculous. First of all, it is date and time validation (you can say "11:00pm" to make it pass). The only reason it is silghtly 'better' (well, debatable, for sure) is that it doesn't enforce a date format. In all other respects, it's crap. It even passes stuff like "11" (which translates to "11pm 31st of Oct 2001", if it makes any sense).
An alternative solution is to pass format
parameter using YYYY
, YY
, MMMM
, MMM
, MM
, M
, DD
, and D
wildcards. The MMMM
and MM
wildcards would be full month name, and short month name respectively, but then we have a locale problem.
from validator.js.
Yeah isDate() was a user-contributed validator. Date validation is a nightmare - I'll have to think of the best way of moving forward with this one..
from validator.js.
Actually @foxbunny I've added the changes you mentioned in this commit. Can you let me know how this goes? It (impressively) passes the tests.. (TIL about Date.parse!)
from validator.js.
I haven't been able to find a better solution. All parsers I've looked at will parse just about anything. If you throw a cow at them, they'll parse it into a Date object. So they can't be used reliably to validate dates. I think it should be noted in the docs, that isDate() should be used only if you want to make sure it's a 'pareseable string', and that one should use regex for more strict validation.
from validator.js.
I've added a note in the README, thanks
from validator.js.
Related Issues (20)
- Including special characters HOT 1
- Hyphen before a dot is a valid url HOT 1
- `javascript: ...` treated as a valid URL HOT 3
- `isDate` validation is broken after upgrading to validator v13.11.0 HOT 4
- isStrongPassword function is not considering \ as a Special Character
- isISO8601 doesn't support year with more than 4 digits HOT 3
- SyntaxError: Invalid regular expression HOT 1
- isEmail accepts incorrect domain. HOT 1
- isDate throws when using a non-valid string with a format HOT 1
- isPassport - Azerbaijan validation fails HOT 5
- Npm and git master out of sync HOT 1
- [Enhancement] isHash should validate algorithm name HOT 5
- Implement a new method, **isJWTExpiration**, to validate the expiration of JWTs using the "exp" claim. HOT 1
- validator.js timestamp validation support HOT 5
- Add support for Cron format validation HOT 2
- Test script does not work, breaks before running any test HOT 1
- isDate : iOS and Android return different results HOT 2
- Unable to run tests HOT 1
- Incorrect regex pattern HOT 4
- Add a new feature to validate UPI HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from validator.js.