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和Asp、Php等后端程序间传值编码统一
Apr 17 Javascript
jquery制作搜狐快站页面效果示例分享
Feb 21 Javascript
jQuery 删除/替换DOM元素的几种方式
May 20 Javascript
jQuery如何防止这种冒泡事件发生
Feb 27 Javascript
纯javascript实现的小游戏《Flappy Pig》实例
Jul 27 Javascript
javascript中Array()数组函数详解
Aug 23 Javascript
JQuery菜单效果的两个实例讲解(3)
Sep 17 Javascript
学习JavaScript设计模式(接口)
Nov 26 Javascript
微信小程序 获取设备信息 API实例详解
Oct 02 Javascript
RequireJS简易绘图程序开发
Oct 28 Javascript
vue设置全局访问接口API地址操作
Aug 14 Javascript
详解javascript脚本何时会被执行
Feb 05 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
使用sockets:从新闻组中获取文章(二)
2006/10/09 PHP
用cookies来跟踪识别用户
2006/10/09 PHP
PHP 中检查或过滤IP地址的实现代码
2011/11/27 PHP
解析php中array_merge与array+array的区别
2013/06/21 PHP
完美的2个php检测字符串是否是utf-8编码函数分享
2014/07/28 PHP
PHP实现执行外部程序的方法详解
2017/08/17 PHP
php实现微信支付之退款功能
2018/05/30 PHP
php 可变函数使用小结
2018/06/12 PHP
Laravel框架表单验证操作实例分析
2019/09/30 PHP
javaScript - 如何引入js代码
2021/03/09 Javascript
JS如何判断移动端访问设备并解析对应CSS
2013/11/27 Javascript
Javascript写入txt和读取txt文件示例
2014/02/12 Javascript
js事件监听机制(事件捕获)总结
2014/08/08 Javascript
推荐4个原生javascript常用的函数
2015/01/12 Javascript
jQuery组件easyui对话框实现代码
2016/08/25 Javascript
vue.js组件之间传递数据的方法
2017/07/10 Javascript
基于vue的换肤功能的示例代码
2017/10/10 Javascript
Angularjs实现控制器之间通信方式实例总结
2018/03/27 Javascript
详解easyui基于 layui.laydate日期扩展组件
2018/07/18 Javascript
js实现倒计时器自定义时间和暂停
2019/02/25 Javascript
jquery将json转为数据字典的实例代码
2019/10/11 jQuery
Vue组件简易模拟实现购物车
2020/12/21 Vue.js
[04:19]DOTA2完美大师赛第四天精彩集锦
2017/11/26 DOTA
python双向链表实现实例代码
2013/11/21 Python
linux系统使用python监测网络接口获取网络的输入输出
2014/01/15 Python
Python中字典映射类型的学习教程
2015/08/20 Python
python学习之面向对象【入门初级篇】
2017/01/21 Python
全球领先的中国制造商品在线批发平台:DHgate
2020/01/28 全球购物
C#中有没有运算符重载?能否使用指针?
2014/05/05 面试题
管理专员自荐信
2014/01/26 职场文书
派出所班子党的群众路线对照检查材料思想汇报
2014/10/01 职场文书
法学专业大学生实习自我鉴定
2014/10/05 职场文书
先进人物事迹材料
2014/12/29 职场文书
2015年保管员工作总结
2015/04/30 职场文书
一文搞懂Golang 时间和日期相关函数
2021/12/06 Golang
Nginx禁止ip访问或非法域名访问
2022/04/07 Servers