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 String对象扩展HTML编码和解码的方法
Jun 02 Javascript
关于Mozilla浏览器不支持innerText的解决办法
Jan 01 Javascript
JavaScript修改css样式style动态改变元素样式
Dec 16 Javascript
JS实现判断滚动条滚到页面底部并执行事件的方法
Dec 18 Javascript
JQuery简单实现锚点链接的平滑滚动
May 03 Javascript
详解JavaScript编程中正则表达式的使用
Oct 25 Javascript
跟我学习javascript创建对象(类)的8种方法
Nov 20 Javascript
jQuery实现的可编辑表格完整实例
Jun 20 Javascript
深入浅析JavaScript中的Function类型
Jul 09 Javascript
js简单获取表单中单选按钮值的方法
Aug 23 Javascript
Vue 页面切换效果之 BubbleTransition(推荐)
Apr 08 Javascript
JavaScript实现简单拖拽效果
Sep 15 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
PHP5中MVC结构学习
2006/10/09 PHP
PHP模拟SQL Server的两个日期处理函数
2006/10/09 PHP
PHP实现获取域名的方法小结
2014/11/05 PHP
PHP stream_context_create()函数的使用示例
2015/05/12 PHP
php验证邮箱和ip地址最简单方法汇总
2015/10/30 PHP
smarty自定义函数用法示例
2016/05/20 PHP
js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)
2012/12/27 Javascript
js 验证密码强弱的小例子
2013/03/21 Javascript
javascript教程:关于if简写语句优化的方法
2014/05/17 Javascript
ECMAscript 变量作用域总结概括
2017/08/18 Javascript
JavaScript文件的同步和异步加载的实现代码
2017/08/19 Javascript
原生JavaScrpit中异步请求Ajax实现方法
2017/11/03 Javascript
JavaScript实现获取select下拉框中第一个值的方法
2018/02/06 Javascript
Javascript实现一朵从含苞到绽放的玫瑰
2019/03/30 Javascript
vue学习笔记之给组件绑定原生事件操作示例
2020/02/27 Javascript
jQuery插件simplePagination的使用方法示例
2020/04/28 jQuery
Vue——解决报错 Computed property &quot;****&quot; was assigned to but it has no setter.
2020/12/19 Vue.js
elementui实现预览图片组件二次封装
2020/12/29 Javascript
[07:59]2014DOTA2叨叨刀塔 林熊猫称被邀请赛现场盛况震撼
2014/07/21 DOTA
Python操作RabbitMQ服务器实现消息队列的路由功能
2016/06/29 Python
django 使用 request 获取浏览器发送的参数示例代码
2018/06/11 Python
python实现电脑自动关机
2018/06/20 Python
对matplotlib改变colorbar位置和方向的方法详解
2018/12/13 Python
python实现最小二乘法线性拟合
2019/07/19 Python
解决Tensorboard 不显示计算图graph的问题
2020/02/15 Python
pytorch加载自己的图像数据集实例
2020/07/07 Python
H5最强接口之canvas实现动态图形功能
2019/05/31 HTML / CSS
Amcal中文官网:澳洲综合性连锁药房
2019/03/28 全球购物
State Cashmere官网:半零售价可持续蒙古羊绒
2020/02/26 全球购物
夜大自我鉴定
2013/10/31 职场文书
法人代表委托书
2014/04/04 职场文书
英文请假条
2014/04/11 职场文书
国际贸易毕业生自荐书
2014/06/22 职场文书
社区活动策划方案
2014/08/21 职场文书
群众路线个人剖析材料
2014/10/07 职场文书
党员“一帮一”活动总结
2015/05/07 职场文书