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写的一个链表实现代码
Oct 25 Javascript
jquery $.each() 使用小探
Aug 23 Javascript
js的onload事件及初始化按钮事件示例代码
Sep 25 Javascript
js读取json的两种常用方法示例介绍
Oct 19 Javascript
JS简单实现城市二级联动选择插件的方法
Aug 19 Javascript
jQuery实现的文字hover颜色渐变效果实例
Feb 20 Javascript
在javascript中创建对象的各种模式解析
May 16 Javascript
基于zepto.js实现登录界面
Oct 09 Javascript
Vue props用法详解(小结)
Jul 03 Javascript
Angularjs实现页面模板清除的方法
Jul 20 Javascript
ES6知识点整理之函数对象参数默认值及其解构应用示例
Apr 17 Javascript
详解vue中使用transition和animation的实例代码
Dec 12 Vue.js
不定义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
echo(),print(),print_r()之间的区别?
2006/11/19 PHP
ThinkPHP视图查询详解
2014/06/30 PHP
php相对当前文件include其它文件的方法
2015/03/13 PHP
CL vs ForZe BO5 第五场 2.13
2021/03/10 DOTA
初学JavaScript_03(ExtJs Grid的简单使用)
2008/10/02 Javascript
用jQuery中的ajax分页实现代码
2011/09/20 Javascript
JQuery获取各种宽度、高度(format函数)实例
2013/03/04 Javascript
JavaScript全排列的六种算法 具体实现
2013/06/29 Javascript
解决jquery1.9不支持browser对象的问题
2013/11/13 Javascript
JS数组array元素的添加和删除方法代码实例
2015/06/01 Javascript
jQuery实现可展开合拢的手风琴面板菜单
2015/09/15 Javascript
基于jquery实现ajax无刷新评论
2020/08/19 Javascript
瀑布流的实现方式(原生js+jquery+css3)
2020/06/28 Javascript
jquery实现瀑布流效果 jquery下拉加载新数据
2016/12/12 Javascript
详解Vue 实例中的生命周期钩子
2017/03/21 Javascript
总结js中的一些兼容性易错的问题
2017/12/18 Javascript
webpack4简单入门实例
2018/09/06 Javascript
微信小程序扫描二维码获取信息实例详解
2019/05/07 Javascript
js遍历详解(forEach, map, for, for...in, for...of)
2019/08/28 Javascript
解决vue的过渡动画无法正常实现问题
2019/10/31 Javascript
js实现树形数据转成扁平数据的方法示例
2020/02/27 Javascript
Vue实现导航栏菜单
2020/08/19 Javascript
javascript中layim之查找好友查找群组
2021/02/06 Javascript
python求列表交集的方法汇总
2014/11/10 Python
Python中操作MySQL入门实例
2015/02/08 Python
简单介绍Python2.x版本中的cmp()方法的使用
2015/05/20 Python
Python中操作mysql的pymysql模块详解
2016/09/13 Python
Python使用tkinter库实现文本显示用户输入功能示例
2018/05/30 Python
python 画三维图像 曲面图和散点图的示例
2018/12/29 Python
Python如何使用k-means方法将列表中相似的句子归类
2019/08/08 Python
Windows下Anaconda安装、换源与更新的方法
2020/04/17 Python
如何将json数据转换为python数据
2020/09/04 Python
网络体系结构及协议的定义
2014/03/13 面试题
《两个铁球同时着地》教学反思
2014/02/13 职场文书
产品委托授权书范本
2014/09/16 职场文书
docker-compose部署Yapi的方法
2022/04/08 Servers