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 相关文章推荐
一个javascript图片阅览组件
Nov 09 Javascript
JavaScript版TAB选项卡效果实例
Aug 16 Javascript
用JS将搜索的关键字高亮显示实现代码
Nov 08 Javascript
jQuery取消ajax请求的方法
Jun 09 Javascript
浅谈javascript获取元素transform参数
Jul 24 Javascript
JavaScript前端开发之实现二进制读写操作
Nov 04 Javascript
Javascript原型链的原理详解
Jan 05 Javascript
seajs学习之模块的依赖加载及模块API的导出
Oct 20 Javascript
gulp加批处理(.bat)实现ng多应用一键自动化构建
Feb 16 Javascript
vue2.0开发入门笔记之.vue文件的生成和使用
Sep 19 Javascript
vue使用中的内存泄漏【推荐】
Jul 10 Javascript
关于自定义Egg.js的请求级别日志详解
Dec 12 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&amp;java(二)
2006/10/09 PHP
隐藏你的.php文件的实现方法
2007/03/19 PHP
基于PHP CURL用法的深入分析
2013/06/09 PHP
用Json实现PHP与JavaScript间数据交换的方法详解
2013/06/20 PHP
Laravel中使用FormRequest进行表单验证方法及问题汇总
2016/06/19 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
2017/03/16 PHP
判断多个元素(RADIO,CHECKBOX等)是否被选择的原理说明
2009/02/18 Javascript
Jquery从头学起第四讲 jquery入门教程
2010/08/01 Javascript
学习面向对象之面向对象的术语
2010/11/30 Javascript
javascript学习笔记(十一) 正则表达式介绍
2012/06/20 Javascript
jquery插件开发之实现jquery手风琴功能分享
2014/03/10 Javascript
javascript实现鼠标拖动改变层大小的方法
2015/04/30 Javascript
JavaScript中的toLocaleLowerCase()方法使用详解
2015/06/06 Javascript
谈谈JavaScript中function多重理解
2015/08/28 Javascript
AngularJS 2.0新特性有哪些
2016/02/18 Javascript
BootStrap Table前台和后台分页对JSON格式的要求
2017/06/28 Javascript
vue-cli+webpack项目 修改项目名称的方法
2018/02/28 Javascript
使用Vue-cli3.0创建的项目 如何发布npm包
2019/10/10 Javascript
vue-drag-chart 拖动/缩放图表组件的实例代码
2020/04/10 Javascript
react的hooks的用法详解
2020/10/12 Javascript
编写简单的Python程序来判断文本的语种
2015/04/07 Python
python开发之str.format()用法实例分析
2016/02/22 Python
Python之读取TXT文件的方法小结
2018/04/27 Python
python迭代dict的key和value的方法
2018/07/06 Python
10 行Python 代码实现 AI 目标检测技术【推荐】
2019/06/14 Python
Pycharm小白级简单使用教程
2020/01/08 Python
django项目中新增app的2种实现方法
2020/04/01 Python
Python Tornado核心及相关原理详解
2020/06/24 Python
如何利用Python动态模拟太阳系运转
2020/09/04 Python
荷兰超市:DEEN
2018/03/14 全球购物
澳洲女装时尚在线:Blue Bungalow
2018/05/05 全球购物
小学教师自我剖析材料
2014/09/29 职场文书
2015年基层党组织公开承诺书
2015/01/21 职场文书
2015年初中生自我评价范文
2015/03/03 职场文书
2015年教师节主持词
2015/07/03 职场文书
SQL 尚未定义空闲 CPU 条件 - OnIdle 作业计划将不起任何作用
2021/06/30 SQL Server