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 相关文章推荐
Jquery+ajax请求data显示在GridView上(asp.net)
Aug 27 Javascript
A标签触发onclick事件而不跳转的多种解决方法
Jun 27 Javascript
jquery实现的一个文章自定义分段显示功能
May 23 Javascript
微信小程序 定义全局数据、函数复用、模版等详细介绍
Oct 27 Javascript
详解使用JS如何制作简单的ASCII图与单极图
Mar 31 Javascript
基于three.js编写的一个项目类示例代码
Jan 05 Javascript
JavaScript 日期时间选择器一些小结
Apr 02 Javascript
小程序显示弹窗时禁止下层的内容滚动实现方法
Mar 20 Javascript
JavaScript之数组扁平化详解
Jun 03 Javascript
小程序点击图片实现png转jpg
Oct 22 Javascript
vue实现公告栏文字上下滚动效果的示例代码
Jun 16 Javascript
vant 时间选择器--开始时间和结束时间实例
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之第五天
2006/10/09 PHP
一个程序下载的管理程序(一)
2006/10/09 PHP
新手学习PHP的一些基础知识分享
2011/07/27 PHP
header导出Excel应用示例
2014/01/24 PHP
php中curl使用指南
2015/02/05 PHP
PHP二维数组矩形转置实例
2016/07/20 PHP
简单的pgsql pdo php操作类实现代码
2016/08/25 PHP
phpstorm 正则匹配删除空行、注释行(替换注释行为空行)
2018/01/21 PHP
页面载入结束自动调用js函数示例
2013/09/23 Javascript
js数组的基本用法及数组根据下标(数值或字符)移除元素
2013/10/20 Javascript
JavaScript自定义数组排序方法
2015/02/12 Javascript
理解JavaScript中Promise的使用
2016/01/18 Javascript
jQuery Chosen通用初始化
2017/03/07 Javascript
利用angular、react和vue实现相同的面试题组件
2018/02/19 Javascript
Vue自定义弹窗指令的实现代码
2018/08/13 Javascript
[40:55]Liquid vs LGD 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
详解Python中的序列化与反序列化的使用
2015/06/30 Python
Python使用pymysql小技巧
2017/06/04 Python
Python聊天室程序(基础版)
2018/04/01 Python
Python实现读取SQLServer数据并插入到MongoDB数据库的方法示例
2018/06/09 Python
Python基础学习之函数方法实例详解
2019/06/18 Python
Python 使用 PyMysql、DBUtils 创建连接池提升性能
2019/08/14 Python
Python如何实现FTP功能
2020/05/28 Python
解决python中import文件夹下面py文件报错问题
2020/06/01 Python
Keras实现DenseNet结构操作
2020/07/06 Python
Pycharm及python安装详细教程(图解)
2020/07/31 Python
如何解决flask修改静态资源后缓存文件不能及时更改问题
2020/08/02 Python
实例教程 HTML5 Canvas 超炫酷烟花绽放动画实现代码
2014/11/05 HTML / CSS
EMPHASIS艾斐诗官网:周生生旗下原创精品珠宝品牌
2020/12/17 全球购物
公司JAVA开发面试题
2015/04/02 面试题
SQL语言面试题
2013/08/27 面试题
房地产销售员的自我评价分享
2013/12/04 职场文书
聚美优品励志广告词
2014/03/14 职场文书
分享15个Webpack实用的插件!!!
2021/03/31 Javascript
Python实现查询剪贴板自动匹配信息的思路详解
2021/07/09 Python
Python操作CSV格式文件的方法大全
2021/07/15 Python