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 相关文章推荐
使用新的消息弹出框blackbirdjs
Oct 16 Javascript
基于jquery的网页SELECT下拉框美化代码
Oct 28 Javascript
JAVASCRIPT车架号识别/验证函数代码 汽车车架号验证程序
Jan 08 Javascript
firefox浏览器不支持innerText的解决方法
Aug 07 Javascript
JavaScript学习小结(一)——JavaScript入门基础
Sep 02 Javascript
jquery对Json的各种遍历方法总结(必看篇)
Sep 29 Javascript
详解vue-cli3 中跨域解决方案
Apr 10 Javascript
了解在JavaScript中将值转换为字符串的5种方法
Jun 06 Javascript
jquery插件开发模式实例详解
Jul 20 jQuery
封装微信小程序http拦截器过程解析
Aug 13 Javascript
如何通过shell脚本自动生成vue文件详解
Sep 10 Javascript
通过实例解析javascript Date对象属性及方法
Nov 04 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 遍历文件实现代码
2011/05/04 PHP
PHP数组去重比较快的实现方式
2016/01/19 PHP
Joomla开启SEF的方法
2016/05/04 PHP
PHP使用mysql与mysqli连接Mysql数据库用法示例
2016/07/07 PHP
php用wangeditor3实现图片上传功能
2019/08/22 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
兼容IE、FireFox、Chrome等浏览器的xml处理函数js代码
2011/11/30 Javascript
UpdatePanel和Jquery冲突的解决方法
2013/04/01 Javascript
Javascript alert消息换行的方法
2013/08/07 Javascript
js有序数组的连接问题
2013/10/01 Javascript
实例详解AngularJS实现无限级联动菜单
2016/01/15 Javascript
python时间整形转标准格式的示例分享
2014/02/14 Python
Python中__new__与__init__方法的区别详解
2015/05/04 Python
Django自定义用户认证示例详解
2018/03/14 Python
Python中的 enum 模块源码详析
2019/01/09 Python
python爬虫解决验证码的思路及示例
2019/08/01 Python
python 获取当前目录下的文件目录和文件名实例代码详解
2020/03/10 Python
Django models文件模型变更错误解决
2020/05/11 Python
Django自关联实现多级联动查询实例
2020/05/19 Python
详解移动端Html5页面中1px边框的几种解决方法
2018/07/24 HTML / CSS
Boda Skins皮衣官网:奢侈皮夹克,全球配送
2016/12/15 全球购物
英国计算机商店:Technextday
2019/12/28 全球购物
生物科学系大学生的自我评价
2013/12/20 职场文书
职工运动会邀请函
2014/01/19 职场文书
上课迟到检讨书
2014/02/19 职场文书
大学生上课迟到检讨书
2014/10/15 职场文书
干部个人考察材料
2014/12/24 职场文书
前台接待员岗位职责
2015/04/15 职场文书
居安思危观后感
2015/06/11 职场文书
红楼梦读书笔记
2015/06/25 职场文书
消夏晚会主持词
2015/06/30 职场文书
《小小的船》教学反思
2016/02/18 职场文书
导游词之新疆尼雅遗址
2019/10/16 职场文书
总结Python使用过程中的bug
2021/06/18 Python
手写Spirit防抖函数underscore和节流函数lodash
2022/03/22 Javascript
windows10声卡驱动怎么安装?win10声卡驱动安装操作步骤教程
2022/08/05 数码科技