js日期插件dateHelp获取本月、三个月、今年的日期

前端技术 2023/09/06 JavaScript

最近看了一些关于面向对象的知识,最近工作中在做统计查询的时候需要用到本月、近三个月、今年的日期范围,所以下面用用面向对象的思想写了一个获取日期的插件,大家可以借鉴使用。

直接通过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程序设计有所帮助。

本文地址:https://www.stayed.cn/item/16237

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。