GithubHelp home page GithubHelp logo

isDate() validation about validator.js HOT 6 CLOSED

validatorjs avatar validatorjs commented on July 18, 2024
isDate() validation

from validator.js.

Comments (6)

foxbunny avatar foxbunny commented on July 18, 2024

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.

foxbunny avatar foxbunny commented on July 18, 2024

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.

chriso avatar chriso commented on July 18, 2024

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.

chriso avatar chriso commented on July 18, 2024

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.

foxbunny avatar foxbunny commented on July 18, 2024

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.

chriso avatar chriso commented on July 18, 2024

I've added a note in the README, thanks

from validator.js.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.