最近看了一些關(guān)于面向?qū)ο蟮闹R(shí),最近工作中在做統(tǒng)計(jì)查詢的時(shí)候需要用到本月、近三個(gè)月、今年的日期范圍,所以下面用用面向?qū)ο蟮乃枷雽懥艘粋€(gè)獲取日期的插件,大家可以借鑒使用。
直接通過new DateHelp就可以調(diào)用了
var myDate = new DateHelp({
date:'2015-02-01',//從此日期開始計(jì)算
format:'yyyy/MM/dd'
});
myDate.getThisMonth();
myDate.getThreeMonth();
myDate.getThisYear();
dateHelp.js插件
/**
* 通過調(diào)用可以獲取本月,近三個(gè)月,今年的日期
* @param obj
* @constructor
*/
function DateHelp(obj) {
/*var obj = {
date:'2015-02-01',//從此日期開始計(jì)算
type:'month',//以年月日向前計(jì)算:年(year),月(month),日(day)
value:'14',//向前計(jì)算的數(shù)值,年月日
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.date instanceof Date){
//處理傳進(jìn)來的是日期函數(shù)的
this.year = this.date.getFullYear();
this.month = this.date.getMonth()+1;
this.day = this.date.getDate();
}else{
//處理傳入的是非日期函數(shù)的
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;
}else if (_type == 'month' || _type == '月'){
_year -= parseInt(_value / 12);
_month -= _value % 12;
if(_month <= 0){
_year -= 1;
_month += 12;
}
}else if (_type == 'day' || _type == '日'){
}else {
}
var date = new Date(_year, _month - 1, _day)
return this.formatDate(date, this.format);
}
DateHelp.prototype.formatDate = function(date,fmt){
var o = {
"M+" : date.getMonth()+1, //月份
"d+" : date.getDate(), //日
"h+" : date.getHours(), //小時(shí)
"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(var k in o)
if(new RegExp("("+ k +")").test(fmt))
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
return fmt;
}
DateHelp.prototype.getThisMonth = function() {
var first = new Date(this.year, this.month - 1);
var last = new Date(this.year, this.month, 0);
return this.formatDate(first, this.format) + " - " + this.formatDate(last, this.format);
}
DateHelp.prototype.getThreeMonth = function() {
return this.beforeDate('month', 3) + " - " + this.beforeDate('day', 0);
}
DateHelp.prototype.getThisYear = function() {
var first = new Date(this.year, 0, 1);
var last = new Date(this.year, 11, 31);
return this.formatDate(first, this.format) + " - " + this.formatDate(last, this.format);
}
/*
//示例
var myDate = new DateHelp({
date:'2015-02-01',//從此日期開始計(jì)算
format:'yyyy/MM/dd'
});
console.log(myDate.getThisMonth());
console.log(myDate.getThreeMonth());
console.log(myDate.getThisYear());*/
html測(cè)試代碼
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<script src="myJs/dateHelp.js"></script>
</head>
<body>
<script>
var myDate = new DateHelp({
date:new Date(),//從此日期開始計(jì)算
format:'yyyy/MM/dd'
});
console.log(myDate.getThisMonth());
console.log(myDate.getThreeMonth());
console.log(myDate.getThisYear());
</script>
</body>
</html>
希望本文所述對(duì)大家學(xué)習(xí)javascript程序設(shè)計(jì)有所幫助。