/* DateFormat.js - 格式化日期 使用方法: 1,导入DateFormat.js文件到页面中; 2,在JavaScript脚本中构造一个实例,DateFormat df = new DateFormat(); 3,如果是格式化日期,则执行format()方法;     var date_str = df.format(日期对象, "格式化后的样式,如yyyy-MM-dd");    4,如果是转换成日期,则执行parse()方法; var date = df.parse("需要转换成日期的字符串", "字符串的格式,如yyyy-MM-dd"); */ /** * 验证字符串是否会合法的yyyy-mm-dd日期格式,且检验日期是否有效 * str:要进行检证的字符串 * msg:提示信息 */ function checkDate(str,msg){ if (str == null || str == "") return true; var reg = /^(\d{4})-(\d{2})-(\d{2})$/; var r = str.match(reg); if(r==null){alert(msg+"的日期格式(YYYY-MM-DD)不正确,请重输!");return false; } r[2]=r[2]-1; var d= new Date(r[1],r[2],r[3]); if(d.getFullYear()!=r[1] || d.getMonth()!=r[2] ||d.getDate()!=r[3] ){ alert("你输入的"+msg +"不正确,请重输!"); return false; } return true; } /* * 比较两个日期,先验证日期格式是否正确,两个日期都存在时d2大于d1返回true,调用strUtil的isNull函数 */ function compareDate(d1,msg1,d2,msg2) { // 日期格式验证 if (!checkDate(d1, msg1) || !checkDate(d2, msg2)) { return false; } // 两个日期都有时d2大于等于d1返回true if (!isNull(d1) && !isNull(d2)) { if (d1 > d2) { alert(msg1 + "不能大于" + msg2); return false; } } return true; } function DateFormat() { /* pattern:基本和java相同, 支持如下: y:年 1996(yyyy); 96(yy) M:月 July(MMMM); Jul(MMM); 07(MM); 7(M) d:日(d or dd) E:星期几 Tuesday(EEEE); Tue(EEE) */ var shortWeek = new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat"); var longWeek = new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"); var shortMonth = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"); var longMonth = new Array("January","February","March","April","May","June","July","August","September","October","November","December"); this.parse = function(dateStr, pattern) { var year="",month="",date=""; //年 year = getFieldValue(pattern,"y",dateStr); if (year.length==2) year = "19" + year; year = parseInt(year); //月 month = getFieldValue(pattern,"M",dateStr); month = parseInt(month)-1; //日 date = getFieldValue(pattern,"d",dateStr); date = parseInt(date); return new Date(year,month,date); } function getFieldValue(pattern,targ, dateStr) { var i = pattern.indexOf(targ); var val=""; while (i >= 0 && i 0 && i2 < pattern.length && pattern.substring(i2,i2+1) == targ) { i2++; } var targs = pattern.substring(i1,i2); var l = targs.length; switch(targ) { case "y": if (l == 4) { if (value < 10) value = "190" + value; else if (value < 100) value = "19" + value; } else if (l < 4) { value = "" + (value % Math.pow(10,l)); for (var i=0; i 3) { value=longMonth[value]; } break; case "d": if (l == 2 && value < 10) { value = "0" + value; } break; case "E": if (l > 3) value = longWeek[value]; else value = shortWeek[value]; break; } pattern = pattern.substring(0,i1) + value+pattern.substring(i2,pattern.length); return pattern; } }