function String.prototype.getTimePart(mask,subMask){
return parseInt(this.substr(mask.indexOf(subMask),subMask.length));
}
function checkDate(st,mask){
var yyyy=st.getTimePart(mask,"yyyy");
var MM=st.getTimePart(mask,"MM")-1;
var dd=st.getTimePart(mask,"dd");
var hh=st.getTimePart(mask,"hh");
var mm=st.getTimePart(mask,"mm");
var ss=st.getTimePart(mask,"ss");
with (new Date(yyyy,MM,dd,hh,mm,ss))
return (getFullYear()==yyyy && getMonth()==MM && getDate()==dd && getHours()==hh && getMinutes()==mm && getSeconds()==ss)
}var st="2003-05-04 23:07:59";
var mask="yyyy-MM-dd hh:mm:ss";
if (!checkDate(st,mask))
alert(st+" is uncorrect date format");
else 
alert(st+" is correct date format");var st="2003-05-32 23:07:59";
var mask="yyyy-MM-dd hh:mm:ss";
if (!checkDate(st,mask))
alert(st+" is uncorrect date format");
else 
alert(st+" is correct date format");

解决方案 »

  1.   

    Date.prototype.format = function (format){
    if (format == null) format = "yyyy/MM/dd HH:mm:ss.SSS";
    var year = this.getFullYear();
    var month = this.getMonth();
    var sMonth = ["January","February","March","April","May","June","July","August","September","October","November","December"][month];
    var date = this.getDate();
    var day = this.getDay();
    var hr = this.getHours();
    var min = this.getMinutes();
    var sec = this.getSeconds();
    var daysInYear = Math.ceil((this-new Date(year,0,0))/86400000);
    var weekInYear = Math.ceil((daysInYear+new Date(year,0,1).getDay())/7);
    var weekInMonth = Math.ceil((date+new Date(year,month,1).getDay())/7);
    return format.replace("yyyy",year).replace("yy",year.toString().substr(2)).replace("dd",(date<10?"0":"")+date).replace("HH",(hr<10?"0":"")+hr).replace("KK",(hr%12<10?"0":"")+hr%12).replace("kk",(hr>0&&hr<10?"0":"")+(((hr+23)%24)+1)).replace("hh",(hr>0&&hr<10||hr>12&&hr<22?"0":"")+(((hr+11)%12)+1)).replace("mm",(min<10?"0":"")+min).replace("ss",(sec<10?"0":"")+sec).replace("SSS",this%1000).replace("a",(hr<12?"AM":"PM")).replace("w",weekInYear).replace("W",weekInMonth).replace("E",["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"][day]).replace("D",daysInYear).replace(/MMMM+/,sMonth).replace("MMM",sMonth.substring(0,3)).replace("MM",(month<9?"0":"")+(month+1)).replace("F",Math.ceil(date/7));
    }
    var d = new Date();
    alert(d.format("MM-dd-yyyy F"));
    alert(d.format());//default format
    alert(d.format("MM-dd-yyyy"));
    alert(d.format("dd/MM/yy"));
    alert(d.format("dd\\MM\\yyyy HH:mm ss.SSS"));
    alert(d.format("yyyy年MM月dd日 HH时mm分ss.SSS秒"));
    alert(d.format("yyyy年MM月dd日 E  HH(0~23)时mm分ss.SSS秒"));
    alert(d.format("yyyy年MM月dd日 E  KK(0~11)时mm分ss.SSS秒 a"));
    alert(d.format("yyyy年MM月dd日 E  hh(1~12)时mm分ss.SSS秒 a"));
    alert(d.format("yyyy年MM月dd日 E  kk(1~24)时mm分ss.SSS秒 该年的第D天,第w周 这个月的第W周"));
      

  2.   

    现在csdn不能搜从前的帖子了吗?以前都讨论过的。可惜了那些从前没有保存下来的代码。