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 特殊字符
Apr 05 Javascript
浅谈javascript的数据类型检测
Jul 10 Javascript
JavaScript判断访问的来源是手机还是电脑,用的哪种浏览器
Dec 12 Javascript
jQuery简单实现banner图片切换
Jan 02 Javascript
js事件绑定快捷键以ctrl+k为例
Sep 30 Javascript
JavaScript+html5 canvas制作色彩斑斓的正方形效果
Jan 27 Javascript
jquery使用Cookie和JSON记录用户最近浏览历史
Apr 19 Javascript
JS创建事件的三种方法(实例代码)
May 12 Javascript
js中遍历Map对象的简单实例
Aug 08 Javascript
JS当前页面登录注册框,固定DIV,底层阴影的实例代码
Sep 29 Javascript
JavaScript运动框架 链式运动到完美运动(五)
May 18 Javascript
移动端吸顶fixbar的解决方案详解
Jul 17 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
深入extjs与php参数交互的详解
2013/06/25 PHP
php断点续传之如何分割合并文件
2014/03/22 PHP
php实现分页显示
2015/11/03 PHP
php连接mysql数据库最简单的实现方法
2019/09/24 PHP
jquery入门—选择器实现隔行变色实例代码
2013/01/04 Javascript
禁用JavaScript控制台调试的方法
2014/03/07 Javascript
jquery删除指定子元素代码实例
2015/01/13 Javascript
JavaScript学习笔记之创建对象
2016/03/25 Javascript
限制只能输入数字的实现代码
2016/05/16 Javascript
浅谈js和css内联外联注意事项
2016/06/30 Javascript
微信小程序 本地存储及登录页面处理实例详解
2017/01/11 Javascript
React通过父组件传递类名给子组件的实现方法
2017/11/13 Javascript
weebox弹出窗口不居中显示的解决方法
2017/11/27 Javascript
jQuery实现获取form表单内容及绑定数据到form表单操作分析
2018/07/03 jQuery
JavaScript引用类型之基本包装类型实例分析【Boolean、Number和String】
2018/08/09 Javascript
详解在微信小程序的JS脚本中使用Promise来优化函数处理
2019/03/06 Javascript
详解JavaScript 异步编程
2020/07/13 Javascript
[02:12]Dota 2 推出全新英雄—— 电炎绝手
2019/08/23 DOTA
python执行外部程序的常用方法小结
2015/03/21 Python
详解python时间模块中的datetime模块
2016/01/13 Python
Python文件夹与文件的相关操作(推荐)
2016/07/25 Python
Python实现获取nginx服务器ip及流量统计信息功能示例
2018/05/18 Python
Django1.9 加载通过ImageField上传的图片方法
2018/05/25 Python
Python中包的用法及安装
2020/02/11 Python
Python模拟登录和登录跳转的参考示例
2020/10/30 Python
Soft Cotton捷克:来自爱琴海棉花的浴袍
2017/02/01 全球购物
香港士多网上超级市场:Ztore
2021/01/09 全球购物
教你打造完美的创业计划书
2014/01/06 职场文书
运动会口号16字
2014/06/07 职场文书
青年教师师德演讲稿
2014/08/26 职场文书
党的群众路线教育实践活动心得体会(医院)
2014/11/03 职场文书
Python批量将csv文件转化成xml文件的实例
2021/05/10 Python
Python办公自动化之Excel(中)
2021/05/24 Python
python之django路由和视图案例教程
2021/07/26 Python
Java结构型设计模式之组合模式详解
2022/09/23 Java/Android