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 switch case 另类写法
Mar 14 Javascript
Js组件的一些写法
Sep 10 Javascript
基于jQuery的获取标签名的代码
Jul 16 Javascript
弹出窗口并且此窗口带有半透明的遮罩层效果
Mar 13 Javascript
jQuery调取jSon数据并展示的方法
Jan 29 Javascript
复杂的javascript窗口分帧解析
Feb 19 Javascript
js改变style样式和css样式的简单实例
Jun 28 Javascript
node.js中http模块和url模块的简单介绍
Oct 06 Javascript
JQuery使用属性addClass、removeClass和toggleClass实现增加和删除类操作示例
Nov 18 jQuery
Vue简单封装axios之解决post请求后端接收不到参数问题
Feb 16 Javascript
vue深度监听(监听对象和数组的改变)与立即执行监听实例
Sep 04 Javascript
原生JavaScript实现简单五子棋游戏
Jun 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
动漫女神老婆无限好,但日本女生可能就不是这么一回事了!
2020/03/04 日漫
PHP脚本的10个技巧(3)
2006/10/09 PHP
php利用腾讯ip分享计划获取地理位置示例分享
2014/01/20 PHP
php json_encode()函数返回json数据实例代码
2014/10/10 PHP
详解PHP中的mb_detect_encoding函数使用方法
2015/08/18 PHP
PHP pear安装配置教程
2016/05/14 PHP
php微信开发之自定义菜单实现
2016/11/18 PHP
js 判断浏览器类型 去全角、半角空格 自动关闭当前窗口
2009/04/10 Javascript
Jquery中增加参数与Json转换代码
2009/11/20 Javascript
javascript开发技术大全-第1章javascript概述
2011/07/03 Javascript
jQuery前端分页示例分享
2015/02/10 Javascript
AngularJS模块学习之Anchor Scroll
2016/01/19 Javascript
JavaScript实现鼠标点击导航栏变色特效
2017/02/08 Javascript
AngulaJS路由 ui-router 传参实例
2017/04/28 Javascript
JS组件系列之JS组件封装过程详解
2017/04/28 Javascript
微信小程序之GET请求的实例详解
2017/09/29 Javascript
angular2路由之routerLinkActive指令【推荐】
2018/05/30 Javascript
通过jquery的ajax请求本地的json文件方法
2018/08/08 jQuery
引入外部js脚本加载慢与页面白屏问题的解决
2018/12/10 Javascript
浅谈Vue.use到底是什么鬼
2020/01/21 Javascript
python中的sort方法使用详解
2014/07/25 Python
TensorFlow平台下Python实现神经网络
2018/03/10 Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
2019/09/18 Python
Python容器使用的5个技巧和2个误区总结
2019/09/26 Python
Python3.9 beta2版本发布了,看看这7个新的PEP都是什么
2020/06/10 Python
如何在windows下安装配置python工具Ulipad
2020/10/27 Python
英语专业推荐信
2013/11/16 职场文书
就业协议书范本
2014/04/11 职场文书
2014年教师工作总结
2014/11/10 职场文书
2015年清明节活动总结
2015/02/09 职场文书
毕业生党员个人总结
2015/02/14 职场文书
学校运动会加油词
2015/07/18 职场文书
离婚民事起诉状
2015/08/03 职场文书
导游词之南京栖霞山
2019/10/18 职场文书
go语言中json数据的读取和写出操作
2021/04/28 Golang
JavaScript实现一键复制内容剪贴板
2022/07/23 Javascript