js日期插件dateHelp获取本月、三个月、今年的日期


Posted in Javascript onMarch 07, 2016

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

直接通过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程序设计有所帮助。

Javascript 相关文章推荐
node.js中的fs.lchmod方法使用说明
Dec 16 Javascript
理解javascript回调函数
Dec 28 Javascript
jQuery寻找n以内完全数的方法
Jun 24 Javascript
JS实现3D图片旋转展示效果代码
Sep 22 Javascript
js浏览器html5表单验证
Oct 17 Javascript
简单的JS控制button颜色随点击更改的实现方法
Apr 17 Javascript
zTree获取当前节点的下一级子节点数实例
Sep 05 Javascript
es6系列教程_ Map详解以及常用api介绍
Sep 25 Javascript
解决vue-cli webpack打包后加载资源的路径问题
Sep 25 Javascript
React性能优化系列之减少props改变的实现方法
Jan 17 Javascript
利用vue-i18n实现多语言切换效果的方法
Jun 19 Javascript
element-ui中el-upload多文件一次性上传的实现
Dec 02 Javascript
不定义JQuery插件 不要说会JQuery
Mar 07 #Javascript
javascript数组去重小结
Mar 07 #Javascript
详解JS正则replace的使用方法
Mar 06 #Javascript
浅谈javascript中的call、apply、bind
Mar 06 #Javascript
一波JavaScript日期判断脚本分享
Mar 06 #Javascript
Node.js程序中的本地文件操作用法小结
Mar 06 #Javascript
JavaScript实现数据类型的相互转换
Mar 06 #Javascript
You might like
php数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
2011/10/31 PHP
比较好用的PHP防注入漏洞过滤函数代码
2012/04/11 PHP
浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)
2013/06/29 PHP
PHP对象相互引用的内存溢出实例分析
2014/08/28 PHP
PHP进阶学习之命名空间基本用法分析
2019/06/18 PHP
jquery 插件 任意位置浮动固定层
2008/12/25 Javascript
ASP.NET jQuery 实例7 通过jQuery来获取DropDownList的Text/Value属性值
2012/02/03 Javascript
js面向对象 多种创建对象方法小结
2012/05/21 Javascript
js用Date对象处理时间实现思路及代码
2013/01/31 Javascript
Struts2的s:radio标签使用及用jquery添加change事件
2013/04/08 Javascript
21个JavaScript事件(Events)属性汇总
2014/12/02 Javascript
jQuery插件slides实现无缝轮播图特效
2015/04/17 Javascript
关于JS中match() 和 exec() 返回值和属性的测试
2016/03/21 Javascript
基于JS实现的笛卡尔乘积之商品发布
2016/05/13 Javascript
jquery.validate使用详解
2016/06/02 Javascript
angularjs指令之绑定策略(@、=、&amp;)
2017/04/13 Javascript
js学习总结之DOM2兼容处理顺序问题的解决方法
2017/07/27 Javascript
关于Layui Table隐藏列问题
2019/09/16 Javascript
javascript实现前端分页效果
2020/06/24 Javascript
vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据操作
2020/07/31 Javascript
[01:06:42]VP vs NewBee Supermajor 胜者组 BO3 第二场 6.5
2018/06/06 DOTA
python查询mysql中文乱码问题
2014/11/09 Python
python通过imaplib模块读取gmail里邮件的方法
2015/05/08 Python
Python基于pygame实现图片代替鼠标移动效果
2015/11/11 Python
python使用turtle库绘制树
2018/06/25 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
2020/04/07 Python
解决Python发送Http请求时,中文乱码的问题
2020/04/30 Python
Django在Model保存前记录日志实例
2020/05/14 Python
商务日语毕业生自荐信
2013/11/23 职场文书
母婴店促销方案
2014/03/05 职场文书
2015年个人现实表现材料
2014/12/10 职场文书
2015年化工厂工作总结
2015/05/04 职场文书
简爱电影观后感
2015/06/10 职场文书
《法国号》教学反思
2016/02/22 职场文书
2019幼儿园感恩节活动策划书
2019/11/28 职场文书
MybatisPlus EntityWrapper如何自定义SQL
2022/03/22 Java/Android