Parsing Date in string. fix problem.

by lozenlin

HTML

<span id="resultArea"></span>

JavaScript

//allow yyyy-MM-dd and yyyy/MM/dd only.


function customValidateDateTime(strValue) {
    var value = strValue.replace(/[-]/g, "/");
    var result = Date.parse(value);

    var resultDate = new Date(result);
    var strResultDate = "" + resultDate.getFullYear() + "/";
    if (resultDate.getMonth() < 9) {
        strResultDate += "0";
    }
    strResultDate += (resultDate.getMonth() + 1) + "/";
    if (resultDate.getDate() < 9) {
        strResultDate += "0";
    }
    strResultDate += resultDate.getDate();

    var isValid = true;

    if (isNaN(result)) {
        isValid = false;
    } else if (strResultDate != value) {
        isValid = false;
    }

    return isValid
}

var dateStrings = ["2012-12-03", "2012-12-03x", "2012-12-03xx"];

var result = "";

for (var key in dateStrings) {
    result += "\"" + dateStrings[key] + "\"" + (customValidateDateTime(dateStrings[key]) ? " is a Date." : " is NOT a Date.") + "<br />";
}

var iWannaKnow = new Date(Date.parse("2012/12/03x"));
    
result += "<br /><br />\"2012/12/03x\" = \"" + iWannaKnow.toString() + "\"";

$("#resultArea").html(result);