js 转化为标准日期型-CarlZeng

function NLDate_parseString(sDate, bDoAlert) { var m=0; var d=0; var y=0; var val = sDate; var fmterr = “”; var year=””; var year_char_index, month_char_index, day_char_index; var rtnDate = nu…

function NLDate_parseString(sDate, bDoAlert)
{
var m=0;
var d=0;
var y=0;
var val = sDate;
var fmterr = “”;
var year=””;
var year_char_index, month_char_index, day_char_index;
var rtnDate = null;

if(!window.dateformat)
    window.dateformat = "MM/DD/YYYY";   

if(sDate == "")
{
    return new Date();
}
else if(window.dateformat == "MM/DD/YYYY")
{
    if (val.indexOf("/") != -1)
    {
        var c = val.split("/");
        if(onlydigits(c\[0\])) m = parseInt(c\[0\],10);
        if(onlydigits(c\[1\])) d = parseInt(c\[1\],10);

        if ( d > 1970 )
        {
            year = y = d;
            d = 1;
        }
        else
        {
            if(onlydigits(c\[2\])) y = parseInt(c\[2\],10);
            year=c\[2\];
        }
    }
    else
    {
        var l = val.length, str;
        str = val.substr(0,2-l%2); if(onlydigits(str)) m = parseInt(str,10);
        str = val.substr(2-l%2,2); if(onlydigits(str)) d = parseInt(str,10);
        str = val.substr(4-l%2);   if(onlydigits(str)) y = parseInt(str,10);
        year=str;
    }
}
else if(window.dateformat == "DD/MM/YYYY")
{
    if (val.indexOf("/") != -1)
    {
        var c = val.split("/");
        if(onlydigits(c\[0\])) d = parseInt(c\[0\],10);
        if(onlydigits(c\[1\])) m = parseInt(c\[1\],10);
        if(onlydigits(c\[2\])) y = parseInt(c\[2\],10);
        year=c\[2\];
    }
    else
    {
        var l = val.length, str;
        str = val.substr(0,2-l%2); if(onlydigits(str)) d = parseInt(str,10);
        str = val.substr(2-l%2,2); if(onlydigits(str)) m = parseInt(str,10);
        str = val.substr(4-l%2);   if(onlydigits(str)) y = parseInt(str,10);
        year=str;
    }
}
else if(window.dateformat == "YYYY/MM/DD")
{
    if (val.indexOf("/") != -1)
    {
        var c = val.split("/");
        if(onlydigits(c\[0\])) y = parseInt(c\[0\],10);
        if(onlydigits(c\[1\])) m = parseInt(c\[1\],10);
        if(onlydigits(c\[2\])) d = parseInt(c\[2\],10);
        year=c\[0\];
    }
    else
    {
        var l = val.length, str;
        str = val.substr(0,2-l%2); if(onlydigits(str)) y = parseInt(str,10);
        str = val.substr(2-l%2,2); if(onlydigits(str)) m = parseInt(str,10);
        str = val.substr(4-l%2);   if(onlydigits(str)) d = parseInt(str,10);
        year=str;
    }
}
else if(window.dateformat == "DD.MM.YYYY")
{
    if (val.indexOf(".") != -1)
    {
        var c = val.split(".");
        if(onlydigits(c\[0\])) d = parseInt(c\[0\],10);
        if(onlydigits(c\[1\])) m = parseInt(c\[1\],10);
        if(onlydigits(c\[2\])) y = parseInt(c\[2\],10);
        year=c\[2\];
    }
    else
    {
        var l = val.length, str;
        str = val.substr(0,2-l%2); if(onlydigits(str)) d = parseInt(str,10);
        str = val.substr(2-l%2,2); if(onlydigits(str)) m = parseInt(str,10);
        str = val.substr(4-l%2);   if(onlydigits(str)) y = parseInt(str,10);
        year=parseInt(str,10);
    }
}
else if(window.dateformat == "DD-Mon-YYYY")
{
    if (val.indexOf("-") != -1)
    {
        var c = val.split("-");
        if(onlydigits(c\[0\])) d = parseInt(c\[0\],10);
        m = getMonthIndex(c\[1\]);
        <!--alert('month index....'+m+','+c\[1\]);-->
        if(onlydigits(c\[2\])) y = parseInt(c\[2\],10);
        year=c\[2\];
    }
    else
    {
        var l = val.length, str;
        str = val.substr(0,1+l%2); if(onlydigits(str)) d = parseInt(str,10);
        str = val.substr(1+l%2,3);
        m = getMonthIndex(str);
        str = val.substr(4+l%2);   if(onlydigits(str)) y = parseInt(str,10);
        year=str;
    }
}
else if(window.dateformat == "DD-MONTH-YYYY")
{
    var comps = val.split("-");
    if(onlydigits(comps\[0\]))
        d = parseInt(comps\[0\]);
    m = arrayIndexOf(NLDate\_months, comps\[1\], true) + 1;
    if(onlydigits(comps\[2\]))
    {
        y = parseInt(comps\[2\]);
        year = y;
    }
}
else if(window.dateformat == "YYYY-MM-DD")
{
    var comps = val.split("-");
    if(onlydigits(comps\[2\]))
        d = parseInt(comps\[2\]);
    if(onlydigits(comps\[1\]))
        m = parseInt(comps\[1\]);
    if(onlydigits(comps\[0\]))
    {
        y = parseInt(comps\[0\]);
        year = y;
    }
}
    else if(window.dateformat == "EEYY年MM月DD日")
{
    year\_char\_index = val.indexOf(year\_char\_cn);
    month\_char\_index = val.indexOf(month\_char\_cn);
    day\_char\_index = val.indexOf(day\_char\_cn);
    if(onlydigits(val.substring(month\_char\_index+1,day\_char\_index)))
        d = parseInt(val.substring(month\_char\_index+1,day\_char\_index));
    if(onlydigits(val.substring(year\_char\_index+1,month\_char\_index)))
        m = parseInt(val.substring(year\_char\_index+1,month\_char\_index));
    var era = val.substring(0, 2);
    if(onlydigits(val.substring(2,year\_char\_index)))
    {
        y = get\_gregorian\_year(parseInt(val.substring(2,year\_char\_index)), era);
        year = y;
    }
}
    else if(window.dateformat == "YYYY年MM月DD日")
{
    year\_char\_index = val.indexOf(year\_char\_cn);
    month\_char\_index = val.indexOf(month\_char\_cn);
    day\_char\_index = val.indexOf(day\_char\_cn);
    if(onlydigits(val.substring(month\_char\_index+1,day\_char\_index)))
        d = parseInt(val.substring(month\_char\_index+1,day\_char\_index));
    if(onlydigits(val.substring(year\_char\_index+1,month\_char\_index)))
        m = parseInt(val.substring(year\_char\_index+1,month\_char\_index));
    if(onlydigits(val.substring(0,year\_char\_index)))
    {
        y = parseInt(val.substring(0,year\_char\_index));
        year = y;
    }
}
else if(window.dateformat == "EYY.MM.DD")
{
    comps = val.split(".");
    if(onlydigits(comps\[2\]))
        d = parseInt(comps\[2\]);
    if(onlydigits(comps\[1\]))
        m = parseInt(comps\[1\]);
    var era = comps\[0\].substring(0, 1);
    if(onlydigits(comps\[0\].substring(1,comps\[0\].length)))
    {
        y = get\_gregorian\_year(parseInt(comps\[0\].substring(1,comps\[0\].length)), era);
        year = y;
    }
}
else if(window.dateformat == "DD. Mon YYYY")
{
    comps = val.split(" ");
    if(onlydigits(comps\[0\].substring(0, comps\[0\].length - 1)))
        d = parseInt(comps\[0\].substring(0, comps\[0\].length - 1));
    m = getMonthIndex(comps\[1\]);
    if(onlydigits(comps\[2\]))
    {
        y = parseInt(comps\[2\]);
        year = y;
    }
}
else if(window.dateformat == "DD de MONTH de YYYY")
{
    comps = val.split(" de ");
    if(onlydigits(comps\[0\]))
        d = parseInt(comps\[0\]);
    m = arrayIndexOf(NLDate\_months, comps\[1\]) + 1;
    if(onlydigits(comps\[2\]))
    {
        y = parseInt(comps\[2\]);
        year = y;
    }
}
    else if(window.dateformat == "YYYY년 MM월 DD일")
{
    comps = val.split(" ");
    if(onlydigits(comps\[2\].substring(0, comps\[2\].length-1)))
        d = parseInt(comps\[2\].substring(0, comps\[2\].length-1));
    if(onlydigits(comps\[1\].substring(0, comps\[1\].length-1)))
        m = parseInt(comps\[1\].substring(0, comps\[1\].length-1)) - 1;
    if(onlydigits(comps\[0\].substring(0, comps\[0\].length-1)))
    {
        y = parseInt(comps\[0\].substring(0, comps\[0\].length-1));
        year = y;
    }
}
    else if(window.dateformat == "DD MONTH YYYY")
    {
            comps = val.split(" ");
            if(onlydigits(comps\[0\]))
                    d = parseInt(comps\[0\]);
            m = arrayIndexOf(NLDate\_months, comps\[1\], true) + 1;
            if(onlydigits(comps\[2\]))
            {
                    y = parseInt(comps\[2\]);
                    year = y;
            }
    }
    else if(window.dateformat == "DD MONTH, YYYY")
    {
            comps = val.split(" ");
            if(onlydigits(comps\[0\]))
                    d = parseInt(comps\[0\]);
            m = arrayIndexOf(NLDate\_months, comps\[1\].substring(0, comps\[1\].length-1), true) + 1;
            if(onlydigits(comps\[2\]))
            {
                    y = parseInt(comps\[2\]);
                    year = y;
            }
    }

if(m==0 || d==0)
{
    if(bDoAlert)
    {
        if(fmterr == "")
            fmterr = window.dateformat;
        alert("无效日期值(必须为"+window.dateformat+")");
    }
}
else
{
    if (y==0 && !onlydigits(year)) y = (new Date()).getFullYear();  
    if(m<1) m=1; else if(m>12) m=12;
    if(d<1) d=1; else if(d>31) d=31;
    if(y<100) y+=((y>=70)?1900:2000);
    if(y<1000) y\*=10;
    if (y > 9999) y = (new Date()).getFullYear();

    year = y;
            rtnDate = validateDate(new Date(y, m-1, d), bDoAlert);
}

return rtnDate;

}