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 相关文章推荐
js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)
Dec 27 Javascript
JS实现的省份级联实例代码
Jun 24 Javascript
jQuery中:eq()选择器用法实例
Dec 29 Javascript
JavaScript学习笔记之DOM基础 2.4
Aug 14 Javascript
js密码强度实时检测代码
Mar 02 Javascript
angularjs 中$apply,$digest,$watch详解
Oct 13 Javascript
Jquery树插件zTree实现菜单树
Jan 24 Javascript
浅谈Vue.js中的v-on(事件处理)
Sep 05 Javascript
关于laydate.js加载laydate.css路径错误问题解决
Dec 27 Javascript
JS函数内部属性之arguments和this实例解析
Oct 07 Javascript
详解如何在vue项目中使用eslint+prettier格式化代码
Nov 10 Javascript
基于jquery实现的tab选项卡功能示例【附源码下载】
Jun 10 jQuery
不定义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
40个迹象表明你还是PHP菜鸟
2008/09/29 PHP
PHP乱码问题,UTF-8乱码常见问题小结
2012/04/09 PHP
初步介绍PHP扩展开发经验分享
2012/09/06 PHP
thinkphp文件引用与分支结构用法实例
2014/11/26 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
2019/12/20 PHP
yii2.0框架场景的简单使用示例
2020/01/25 PHP
类似GMAIL的Ajax信息反馈显示
2010/02/16 Javascript
纯jquery实现模仿淘宝购物车结算
2015/08/20 Javascript
jQuery复制表单元素附源码分享效果演示
2015/09/30 Javascript
JavaScript中数组添加值和访问值常见问题
2016/02/06 Javascript
jQuery插件echarts实现的多折线图效果示例【附demo源码下载】
2017/03/04 Javascript
Vue.js实战之Vuex的入门教程
2017/04/01 Javascript
Angular.JS中的this指向详解
2017/05/17 Javascript
基于ES6作用域和解构赋值详解
2017/11/03 Javascript
Nodejs连接mysql并实现增、删、改、查操作的方法详解
2018/01/04 NodeJs
vue实现个人信息查看和密码修改功能
2018/05/06 Javascript
微信小程序chooseImage的用法(从本地相册选择图片或使用相机拍照)
2018/08/22 Javascript
webpack dll打包重复问题优化的解决
2018/10/10 Javascript
js变量声明var使用与不使用的区别详解
2019/01/21 Javascript
ES6中Set和Map用法实例详解
2020/03/02 Javascript
JavaScript如何实现监听键盘输入和鼠标监点击
2020/07/20 Javascript
javascript实现下拉菜单效果
2021/02/09 Javascript
30秒轻松实现TensorFlow物体检测
2018/03/14 Python
python实现文件的分割与合并
2019/08/29 Python
如何把外网python虚拟环境迁移到内网
2020/05/18 Python
python属于跨平台语言码
2020/06/09 Python
python和c语言哪个更适合初学者
2020/06/22 Python
Python通过len函数返回对象长度
2020/10/22 Python
CSS3中的弹性布局em运用入门详解 1em等于多少像素
2021/02/08 HTML / CSS
Draper James官网:知名演员瑞茜·威瑟斯彭所创品牌
2017/10/25 全球购物
Java程序员常见面试题
2015/07/16 面试题
协商一致解除劳动合同协议书
2014/09/14 职场文书
学校领导干部民主生活会整改方案
2014/09/29 职场文书
市委常委会班子党的群众路线教育实践活动整改方案
2014/10/25 职场文书
SQL注入的实现以及防范示例详解
2021/06/02 MySQL
2021年国漫热度排行前十,完美世界上榜,第四是美国动画作品
2022/03/18 国漫