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代码
Mar 07 Javascript
Javascript attachEvent传递参数的办法
Dec 14 Javascript
Javascript中的this绑定介绍
Sep 22 Javascript
JavaScript中标识符提升问题
Jun 11 Javascript
解决WordPress使用CDN后博文无法评论的错误
Dec 15 Javascript
AngularJS页面访问时出现页面闪烁问题的解决
Mar 06 Javascript
javascript拖拽应用实例(二)
Mar 25 Javascript
JS实现的简单四则运算计算器功能示例
Sep 27 Javascript
vue+iview+less 实现换肤功能
Aug 17 Javascript
vue递归组件实战之简单树形控件实例代码
Aug 27 Javascript
Websocket 向指定用户发消息的方法
Jan 09 Javascript
Vue实现手机扫描二维码预览页面效果
May 28 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
memcached 和 mysql 主从环境下php开发代码详解
2010/05/16 PHP
二进制交叉权限微型php类分享
2014/02/07 PHP
php常用字符串比较函数实例汇总
2014/11/24 PHP
php版微信公众平台接口开发之智能回复开发教程
2016/09/22 PHP
2017年最新PHP经典面试题目汇总(上篇)
2017/03/17 PHP
Smarty模板配置实例简析
2019/07/20 PHP
xml 与javascript结合的问题解决方法
2007/03/24 Javascript
js实现iframe动态调整高度的代码
2008/01/06 Javascript
jquery 必填项判断表单是否为空的方法
2008/09/14 Javascript
JS版网站风格切换实例代码
2008/10/06 Javascript
JavaScript在IE中“意外地调用了方法或属性访问”
2008/11/19 Javascript
关于js日期转化为毫秒数“节省20%的效率和和节省9个字符“问题
2012/03/01 Javascript
使用Sticky组件实现带sticky效果的tab导航和滚动导航的方法
2016/03/22 Javascript
js实现的光标位置工具函数示例
2016/10/03 Javascript
Javascript使用uploadify来实现多文件上传
2016/11/16 Javascript
Node.js 回调函数实例详解
2017/07/06 Javascript
VueRouter导航守卫用法详解
2017/12/25 Javascript
利用Console来Debug的10个高级技巧汇总
2018/03/26 Javascript
解决axios发送post请求返回400状态码的问题
2018/08/11 Javascript
JS实现的碰撞检测与周期移动完整示例
2019/09/02 Javascript
[02:38]2018年度DOTA2最佳劣单位选手-完美盛典
2018/12/17 DOTA
numpy中的高维数组转置实例
2018/04/17 Python
Python实现的根据IP地址计算子网掩码位数功能示例
2018/05/23 Python
python 使用opencv 把视频分割成图片示例
2019/12/12 Python
Pycharm如何导入python文件及解决报错问题
2020/05/10 Python
Python使用Selenium实现淘宝抢单的流程分析
2020/06/23 Python
Python字典fromkeys()方法使用代码实例
2020/07/20 Python
Boolean b = new Boolean(“abcde”); 会编译错误码
2013/11/27 面试题
五分钟演讲稿
2014/04/30 职场文书
承诺书样本
2014/08/30 职场文书
观看《杨善洲》宣传教育片心得体会
2016/01/23 职场文书
基于python实现银行管理系统
2021/04/20 Python
JavaScript实现贪吃蛇游戏
2021/06/16 Javascript
Python几种酷炫的进度条的方式
2022/04/11 Python
mysql查找连续出现n次以上的数字
2022/05/11 MySQL
Java时间工具类Date的常用处理方法
2022/05/25 Java/Android