js日期插件dateHelp获取本月、三个月、今年的日期
来源: 阅读:1049 次 日期:2016-07-22 16:15:54
温馨提示: 小编为您整理了“js日期插件dateHelp获取本月、三个月、今年的日期”,方便广大网友查阅!

最近看了一些关于面向对象的知识,最近工作中在做统计查询的时候需要用到本月、近三个月、今年的日期范围,所以下面用用面向对象的思想写了一个获取日期的插件,大家可以借鉴使用。

直接通过new DateHelp就可以调用了

var myDate = new DateHelp({

date:'2015-02-01',//从此日期开始计算

format:'yyyy/MM/dd'

});

myDate.getThisMonth();

myDate.getThreeMonth();

myDate.getThisYear();

dateHelp.js插件

/**

 * 通过调用可以获取本月,近三个月,今年的日期

 * @param obj

 * @constructor

 */

function DateHelp(obj) {

 /*var obj = {

  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.date instanceof Date){

  //处理传进来的是日期函数的

  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;

 }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(),     //小时

  "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',//从此日期开始计算

 format:'yyyy/MM/dd'

});

console.log(myDate.getThisMonth());

console.log(myDate.getThreeMonth());

console.log(myDate.getThisYear());*/

html测试代码

<!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(),//从此日期开始计算

  format:'yyyy/MM/dd'

 });

 console.log(myDate.getThisMonth());

 console.log(myDate.getThreeMonth());

 console.log(myDate.getThisYear());

</script>

</body>

</html>

希望本文所述对大家学习javascript程序设计有所帮助。

更多信息请查看网络编程
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:hfpxwx
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map