/* 功能 : 返回与某日期相距N天(N个24小时)的日期 * 参数 : num number类型 可以为正负整数或者浮点数,默认为1; * type 0(秒) or 1(天),默认为秒 * 返回 : 新的PowerDate类型 */ Date.prototype.dateAfter=function(num,type){ num = (num == null?1:num); if(typeof(num)!="number") throw new Error(-1,"dateAfterDays(num,type)的num参数为数值类型."); type = (type==null?0:type); var arr = [1000,86400000]; var dd = this.valueOf(); dd += num*arr[type]; return new Date(dd); }
//判断是否是闰年,返回true 或者 false Date.prototype.isLeapYear = function (){ var year = this.getFullYear(); return (0==year%4 && ((year % 100 != 0)||(year % 400 == 0))); }
//返回该月天数 Date.prototype.getDaysOfMonth = function (){ return (new Date(this.getFullYear(),this.getMonth()+1,0)).getDate(); }
//转换成大写日期(中文) Date.prototype.getChinaDate = function(){ var year = this.getFullYear().toString(); var month= this.getMonth()+1; var day = this.getDate(); var arrNum = ["零","一","二","三","四","五","六","七","八","九","十","十一","十二"]; var strTmp=""; for(var i=0,j=year.length;i<j;i++){ strTmp += arrNum[year.charAt(i)]; } strTmp += "年"; strTmp += arrNum[month]+"月"; if(day<10) strTmp += arrNum[day]; else if (day <20) strTmp += "十"+arrNum[day-10]; else if (day <30 ) strTmp += "二十"+arrNum[day-20]; else strTmp += "三十"+arrNum[day-30]; strTmp += "日"; return strTmp; } //日期比较函数,参数date:为Date类型,如this日期晚于参数:1,相等:0 早于: -1 Date.prototype.dateCompare = function(date){ if(typeof(date) != "object" || !(/Date/.test(date.constructor))) throw new Error(-1,"dateCompare(date)的date参数为Date类型."); var d = this.getTime() - date.getTime(); return d>0?1:(d==0?0:-1); }
/*功能:返回两日期之差 *参数:pd PowerDate对象 * type: 返回类别标识.yy:年,mm:月,ww:周,dd:日,hh:小时,mi:分,ss:秒,ms:毫秒 * intOrFloat :返回整型还是浮点型值 0:整型,不等于0:浮点型 * output : 输出提示,如:时间差为#周! */ Date.prototype.calDateDistance = function (date,type,intOrFloat,output){ if(typeof(date) != "object" || !(/Date/.test(date.constructor))) throw new Error(-1,"calDateDistance(date,type,intOrFloat)的date参数为Date类型."); type = (type==null?‘dd‘:type); if(!((new RegExp(type+",","g")).test("yy,mm,ww,dd,hh,mi,ss,ms,"))) throw new Error(-1,"calDateDistance(pd,type,intOrFloat,output)的type参数为非法."); var iof = (intOrFloat==null?0:intOrFloat); var miSecMain = this.valueOf(); var miSecSub = date.valueOf(); var num=0; switch(type){ case "yy": num = this.getFullYear() - pd.getFullYear(); break; case "mm": num = (this.getFullYear() - pd.getFullYear())*12+this.getMonth()-pd.getMonth(); break; case "ww": num = ((miSecMain-miSecSub)/7/86400000).fmtRtnVal(iof); break; case "dd": num = ((miSecMain-miSecSub)/86400000).fmtRtnVal(iof); break; case "hh": num = ((miSecMain-miSecSub)/3600000).fmtRtnVal(iof); break; case "mi": num = ((miSecMain-miSecSub)/60000).fmtRtnVal(iof); break; case "ss": num = ((miSecMain-miSecSub)/1000).fmtRtnVal(iof); break; case "ms": num = (miSecMain-miSecSub);break; default: break; } if(output) return output.replace(/#/g,num); else return num; } //返回整数或者两位小数的浮点数 Number.prototype.fmtRtnVal = function (intOrFloat){ return (intOrFloat == 0 ? Math.floor(this) : parseInt(this*100)/100); } //--> </script>
<script language="JavaScript"> <!-- var date = "2004-05-25".createDate(); alert(date.parseString("yy-YY-mm-MM-dd hh:mi:ss.ms WE we",true)); alert(date.calDateDistance(new Date(),"dd",1,"相差#天!"));