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; }