js日期插件dateHelp获取本月、三个月、今年的日期
最近看了一些关于面向对象的知识,最近工作中在做统计查询的时候需要用到本月、近三个月、今年的日期范围,所以下面用用面向对象的思想写了一个获取日期的插件,大家可以借鉴使用。
直接通过newDateHelp就可以调用了
varmyDate=newDateHelp({
date:'2015-02-01',//从此日期开始计算
format:'yyyy/MM/dd'
});
myDate.getThisMonth();
myDate.getThreeMonth();
myDate.getThisYear();
dateHelp.js插件
/**
*通过调用可以获取本月,近三个月,今年的日期
*@paramobj
*@constructor
*/
functionDateHelp(obj){
/*varobj={
date:'2015-02-01',//从此日期开始计算
type:'month',//以年月日向前计算:年(year),月(month),日(day)
value:'14',//向前计算的数值,年月日
format:'yyyy/mm/dd'//日期格式
}*/
this.date=obj.date;
this.type=obj.type;
this.value=obj.value==undefined?obj.value:0;
this.format=obj.format==undefined?obj.format:'yyyy/MM/dd';
//日期和非日期格式获取年月日
if(this.dateinstanceofDate){
//处理传进来的是日期函数的
this.year=this.date.getFullYear();
this.month=this.date.getMonth()+1;
this.day=this.date.getDate();
}else{
//处理传入的是非日期函数的
this.year=this.date.substr(0,4);
this.month=this.date.substr(5,2);
this.day=this.date.substr(8,2);
}
}
DateHelp.prototype.beforeDate=function(type,value){
var_type=type||this.type,
_value=value||this.value,
_year=this.year,
_month=this.month,
_day=this.day;
if(_type=='year'||_type=='年'){
_year-=_value;
}elseif(_type=='month'||_type=='月'){
_year-=parseInt(_value/12);
_month-=_value%12;
if(_month<=0){
_year-=1;
_month+=12;
}
}elseif(_type=='day'||_type=='日'){
}else{
}
vardate=newDate(_year,_month-1,_day)
returnthis.formatDate(date,this.format);
}
DateHelp.prototype.formatDate=function(date,fmt){
varo={
"M+":date.getMonth()+1,//月份
"d+":date.getDate(),//日
"h+":date.getHours(),//小时
"m+":date.getMinutes(),//分
"s+":date.getSeconds(),//秒
"q+":Math.floor((date.getMonth()+3)/3),//季度
"S":date.getMilliseconds()//毫秒
};
if(/(y+)/.test(fmt))
fmt=fmt.replace(RegExp.$1,(date.getFullYear()+"").substr(4-RegExp.$1.length));
for(varkino)
if(newRegExp("("+k+")").test(fmt))
fmt=fmt.replace(RegExp.$1,(RegExp.$1.length==1)?(o[k]):(("00"+o[k]).substr((""+o[k]).length)));
returnfmt;
}
DateHelp.prototype.getThisMonth=function(){
varfirst=newDate(this.year,this.month-1);
varlast=newDate(this.year,this.month,0);
returnthis.formatDate(first,this.format)+"-"+this.formatDate(last,this.format);
}
DateHelp.prototype.getThreeMonth=function(){
returnthis.beforeDate('month',3)+"-"+this.beforeDate('day',0);
}
DateHelp.prototype.getThisYear=function(){
varfirst=newDate(this.year,0,1);
varlast=newDate(this.year,11,31);
returnthis.formatDate(first,this.format)+"-"+this.formatDate(last,this.format);
}
/*
//示例
varmyDate=newDateHelp({
date:'2015-02-01',//从此日期开始计算
format:'yyyy/MM/dd'
});
console.log(myDate.getThisMonth());
console.log(myDate.getThreeMonth());
console.log(myDate.getThisYear());*/
html测试代码
<!DOCTYPEhtml>
<html>
<headlang="en">
<metacharset="UTF-8">
<title></title>
<scriptsrc="myJs/dateHelp.js"></script>
</head>
<body>
<script>
varmyDate=newDateHelp({
date:newDate(),//从此日期开始计算
format:'yyyy/MM/dd'
});
console.log(myDate.getThisMonth());
console.log(myDate.getThreeMonth());
console.log(myDate.getThisYear());
</script>
</body>
</html>
希望本文所述对大家学习javascript程序设计有所帮助。