javascript date 时间 简化类
用例:
var iDate=new IDate();iDate.toString();//y-M-d h:m:s格式输出iDate.h("+1");//小时加一 iDate.h("-1");//小时减一 iDate.h(1); //设定小时为1iDate.h("1");//设定小时为1iDate.h(); //获取小时数iDate.y(2012).M(4).d(14).h(10).m(0).s(0).ms(0);//链式var IDate=(function(){var self,//当前操作的IDate实例,实现静态方法、访问控制names={//原生Date类与本类方法名对应列表y:"FullYear",M:"Month",d:"Date",h:"Hours",m:"Minutes",s:"Seconds",ms:"Milliseconds"};function argParse(k,arg){var res;if(arguments.length){if(typeof arg ==="number"){set(k,arg);//内部方法调用,不使用selfreturn self;}else if(typeof arg ==="string"){if(/^[+-]?\d+$/.test(arg)){var dir;if(arg.charAt(0)==="+"){arg=parseInt(arg,10);dir=1;}else if(arg.charAt(0)==="-"){arg=parseInt(arg.slice(1),10);dir=-1;}set(k,arg,dir);return self;}}}return get(k);}function set(k,v,dir){var dateName=names[k];if(!dir){if(k==="M"){v--;}self.date['set'+dateName](v);//访问暴露在外的属性使用self}else{self.date['set'+dateName](v*dir+self.date["get"+dateName]());}}function get(k){var res=self.date['get'+names[k]]();if(k==="M"){res++;}return res;}function IDate(date){if(arguments.length){if(date instanceof IDate){//防止重复实例化,复制使用:new IDate(iDate.t());return date;}else if(date instanceof Date){this.date=date;}else{this.date=new Date(parseInt(date,10));}}else{this.date=new Date();}}//批量生成外部使用方法:var proto={};for(var name in names){proto[name]=(function(name){return function(arg){self=this;return argParse(name,arg);};}(name));}proto.t=function() {return this.date.getTime();};proto.toString=function() {return this.y()+"-"+this.M()+"-"+this.d()+" "+this.h()+":"+this.m()+":"+this.s();};IDate.prototype=proto;return IDate;}());