Never been to DZone Snippets before?

Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world

« Newer Snippets
Older Snippets »
Showing 1-1 of 1 total  RSS 

Is Date //JavaScript Function


Checks if a date is valid and returns error codes described bellow.

[UPDATED CODE AND HELP CAN BE FOUND HERE]


//+ Jonas Raoni Soares Silva
//@ http://jsfromhell.com/geral/is-date [v1.0]

isDate = function(y, m, d){ //v1.0
        if(typeof y == "string" && m instanceof RegExp && d){
            if(!m.test(y)) return 1;
            y = RegExp["$" + d.y], m = RegExp["$" + d.m], d = RegExp["$" + d.d];
        }
        d = Math.abs(d) || 0, m = Math.abs(m) || 0, y = Math.abs(y) || 0;
        return arguments.length != 3 ? 1 : d < 1 || d > 31 ? 2 : m < 1 || m > 12 ? 3 : /4|6|9|11/.test(m) && d == 31 ? 4
        : m == 2 && (d > ((y = !(y % 4) && (y % 1e2) || !(y % 4e2)) ? 29 : 28)) ? 5 + !!y : 0;
};


Usage
<script type="text/javascript">

getDateMsg = function(x){
    return x == 0 ? "Valid Date"
    : x == 1 ? "Invalid date format"
    : x == 2 ? "Invalid day"
    : x == 3 ? "Invalid month"
    : x == 4 ? "In April, June, September and November there's no 31 day"
    : x == 5 ? "February has only 28 days"
    : x == 6 ? "In leap years, February has 29 days": "nothing =]";
};

var x = [
    isDate("22/07/1984", /^([0-9]{1,2})[\/]([0-9]{1,2})[\/]([0-9]{1,4})$/, {d: 1, m: 2, y: 3}),
    isDate("1984-07-22", /^([0-9]{4})-([0-9]{2})-([0-9]{2})$/, {d: 3, m: 2, y: 1}),
    isDate("07-22-1984", /^([0-9]{4})-([0-9]{2})-([0-9]{2})$/, {d: 3, m: 2, y: 1}),
    isDate(2000, 1, 32),
    isDate(2000, 0, 1),
    isDate(2000, 4, 31),
    isDate(2001, 2, 29),
    isDate(2004, 2, 30)
];

for(var i = -1, l = x.length; ++i < l; document.write(getDateMsg(x[i]), "<br />"));

</script>


Help
isDate(y: Integer, m: Integer, d: Integer): Integer
    Checks a date and returns 0 if it's valid or one of the error codes bellow.
    y year
    m month
    d day

	
isDate(date: String, matcher: RegExp, map: Object): Integer
    Checks a date and returns 0 if it's valid or one of the error codes bellow.
    date date in a string form
    matcher regular expression responsible to find and store the day, month and year
    			
    map object containing the position where each date component is localized inside the regular expression. Its format is the following: {d: positionOfTheDay, m: positionOfTheMonth, y: positionOfTheYear}								
Return codes
    * 0 = Valid date
    * 1 = Date format invalid (regular expression failed or amount of arguments != 3)
    * 2 = Day isn't between 1 and 31
    * 3 = Month isn't between 1 and 12
    * 4 = On April, June, September and November there isn't the day 31
    * 5 = On February the month has only 28 days
    * 6 = Leap year, February has only 29 days
« Newer Snippets
Older Snippets »
Showing 1-1 of 1 total  RSS