/**
|
* 日期范围工具类
|
*/
|
var dateRangeUtil = (function() {
|
/***
|
* 获得当前时间
|
*/
|
this.getCurrentDate = function() {
|
return new Date('2015', '07', '-1');
|
};
|
|
/***
|
* 获得本周起止时间
|
*/
|
this.getCurrentWeek = function() {
|
//起止日期数组
|
var startStop = new Array();
|
//获取当前时间
|
var currentDate = this.getCurrentDate();
|
//返回date是一周中的某一天
|
var week = currentDate.getDay();
|
//返回date是一个月中的某一天
|
var month = currentDate.getDate();
|
|
//一天的毫秒数
|
var millisecond = 1000 * 60 * 60 * 24;
|
//减去的天数
|
var minusDay = week != 0 ? week - 1 : 6;
|
//alert(minusDay);
|
//本周 周一
|
var monday = new Date(currentDate.getTime() - (minusDay * millisecond));
|
//本周 周日
|
var sunday = new Date(monday.getTime() + (6 * millisecond));
|
//添加本周时间
|
startStop.push(monday); //本周起始时间
|
//添加本周最后一天时间
|
startStop.push(sunday); //本周终止时间
|
//返回
|
return startStop;
|
};
|
|
/***
|
* 获得本月的起止时间
|
*/
|
this.getCurrentMonth = function() {
|
//起止日期数组
|
var startStop = new Array();
|
//获取当前时间
|
var currentDate = this.getCurrentDate();
|
//获得当前月份0-11
|
var currentMonth = currentDate.getMonth();
|
//获得当前年份4位年
|
var currentYear = currentDate.getFullYear();
|
//求出本月第一天
|
var firstDay = new Date(currentYear, currentMonth, 1);
|
|
|
//当为12月的时候年份需要加1
|
//月份需要更新为0 也就是下一年的第一个月
|
if (currentMonth == 11) {
|
currentYear++;
|
currentMonth = 0; //就为
|
} else {
|
//否则只是月份增加,以便求的下一月的第一天
|
currentMonth++;
|
}
|
|
|
//一天的毫秒数
|
var millisecond = 1000 * 60 * 60 * 24;
|
//下月的第一天
|
var nextMonthDayOne = new Date(currentYear, currentMonth, 1);
|
//求出上月的最后一天
|
var lastDay = new Date(nextMonthDayOne.getTime() - millisecond);
|
|
//添加至数组中返回
|
startStop.push(firstDay);
|
startStop.push(lastDay);
|
//返回
|
return startStop;
|
};
|
|
/**
|
* 得到本季度开始的月份
|
* @param month 需要计算的月份
|
***/
|
this.getQuarterSeasonStartMonth = function(month) {
|
var quarterMonthStart = 0;
|
var spring = 0; //春
|
var summer = 3; //夏
|
var fall = 6; //秋
|
var winter = 9; //冬
|
//月份从0-11
|
if (month < 3) {
|
return spring;
|
}
|
|
if (month < 6) {
|
return summer;
|
}
|
|
if (month < 9) {
|
return fall;
|
}
|
|
return winter;
|
};
|
|
/**
|
* 获得该月的天数
|
* @param year年份
|
* @param month月份
|
* */
|
this.getMonthDays = function(year, month) {
|
//本月第一天 1-31
|
var relativeDate = new Date(year, month, 1);
|
//获得当前月份0-11
|
var relativeMonth = relativeDate.getMonth();
|
//获得当前年份4位年
|
var relativeYear = relativeDate.getFullYear();
|
|
//当为12月的时候年份需要加1
|
//月份需要更新为0 也就是下一年的第一个月
|
if (relativeMonth == 11) {
|
relativeYear++;
|
relativeMonth = 0;
|
} else {
|
//否则只是月份增加,以便求的下一月的第一天
|
relativeMonth++;
|
}
|
//一天的毫秒数
|
var millisecond = 1000 * 60 * 60 * 24;
|
//下月的第一天
|
var nextMonthDayOne = new Date(relativeYear, relativeMonth, 1);
|
//返回得到上月的最后一天,也就是本月总天数
|
return new Date(nextMonthDayOne.getTime() - millisecond).getDate();
|
};
|
|
/**
|
* 获得本季度的起止日期
|
*/
|
this.getCurrentSeason = function() {
|
//起止日期数组
|
var startStop = new Array();
|
//获取当前时间
|
var currentDate = this.getCurrentDate();
|
//获得当前月份0-11
|
var currentMonth = currentDate.getMonth();
|
//获得当前年份4位年
|
var currentYear = currentDate.getFullYear();
|
//获得本季度开始月份
|
var quarterSeasonStartMonth = this.getQuarterSeasonStartMonth(currentMonth);
|
//获得本季度结束月份
|
var quarterSeasonEndMonth = quarterSeasonStartMonth + 2;
|
|
//获得本季度开始的日期
|
var quarterSeasonStartDate = new Date(currentYear, quarterSeasonStartMonth, 1);
|
//获得本季度结束的日期
|
var quarterSeasonEndDate = new Date(currentYear, quarterSeasonEndMonth, this.getMonthDays(
|
currentYear, quarterSeasonEndMonth));
|
//加入数组返回
|
startStop.push(quarterSeasonStartDate);
|
startStop.push(quarterSeasonEndDate);
|
//返回
|
return startStop;
|
};
|
|
/***
|
* 得到本年的起止日期
|
*
|
*/
|
this.getCurrentYear = function() {
|
//起止日期数组
|
var startStop = new Array();
|
//获取当前时间
|
var currentDate = this.getCurrentDate();
|
//获得当前年份4位年
|
var currentYear = currentDate.getFullYear();
|
|
//本年第一天
|
var currentYearFirstDate = new Date(currentYear, 0, 1);
|
//本年最后一天
|
var currentYearLastDate = new Date(currentYear, 11, 31);
|
//添加至数组
|
startStop.push(currentYearFirstDate);
|
startStop.push(currentYearLastDate);
|
//返回
|
return startStop;
|
};
|
|
/**
|
* 返回上一个月的第一天Date类型
|
* @param year 年
|
* @param month 月
|
**/
|
this.getPriorMonthFirstDay = function(year, month) {
|
//年份为0代表,是本年的第一月,所以不能减
|
if (month == 0) {
|
month = 11; //月份为上年的最后月份
|
year--; //年份减1
|
return new Date(year, month, 1);
|
}
|
//否则,只减去月份
|
month--;
|
return new Date(year, month, 1);;
|
};
|
|
/**
|
* 获得上一月的起止日期
|
* ***/
|
this.getPreviousMonth = function() {
|
//起止日期数组
|
var startStop = new Array();
|
//获取当前时间
|
var currentDate = this.getCurrentDate();
|
//获得当前月份0-11
|
var currentMonth = currentDate.getMonth();
|
//获得当前年份4位年
|
var currentYear = currentDate.getFullYear();
|
//获得上一个月的第一天
|
var priorMonthFirstDay = this.getPriorMonthFirstDay(currentYear, currentMonth);
|
//获得上一月的最后一天
|
var priorMonthLastDay = new Date(priorMonthFirstDay.getFullYear(), priorMonthFirstDay.getMonth(),
|
this.getMonthDays(priorMonthFirstDay.getFullYear(), priorMonthFirstDay.getMonth()));
|
//添加至数组
|
startStop.push(priorMonthFirstDay);
|
startStop.push(priorMonthLastDay);
|
//返回
|
return startStop;
|
};
|
|
|
/**
|
* 获得上一周的起止日期
|
* **/
|
this.getPreviousWeek = function() {
|
//起止日期数组
|
var startStop = new Array();
|
//获取当前时间
|
var currentDate = this.getCurrentDate();
|
//返回date是一周中的某一天
|
var week = currentDate.getDay();
|
//返回date是一个月中的某一天
|
var month = currentDate.getDate();
|
//一天的毫秒数
|
var millisecond = 1000 * 60 * 60 * 24;
|
//减去的天数
|
var minusDay = week != 0 ? week - 1 : 6;
|
//获得当前周的第一天
|
var currentWeekDayOne = new Date(currentDate.getTime() - (millisecond * minusDay));
|
//上周最后一天即本周开始的前一天
|
var priorWeekLastDay = new Date(currentWeekDayOne.getTime() - millisecond);
|
//上周的第一天
|
var priorWeekFirstDay = new Date(priorWeekLastDay.getTime() - (millisecond * 6));
|
|
//添加至数组
|
startStop.push(priorWeekFirstDay);
|
startStop.push(priorWeekLastDay);
|
|
return startStop;
|
};
|
|
/**
|
* 得到上季度的起始日期
|
* year 这个年应该是运算后得到的当前本季度的年份
|
* month 这个应该是运算后得到的当前季度的开始月份
|
* */
|
this.getPriorSeasonFirstDay = function(year, month) {
|
var quarterMonthStart = 0;
|
var spring = 0; //春
|
var summer = 3; //夏
|
var fall = 6; //秋
|
var winter = 9; //冬
|
//月份从0-11
|
switch (month) { //季度的其实月份
|
case spring:
|
//如果是第一季度则应该到去年的冬季
|
year--;
|
month = winter;
|
break;
|
case summer:
|
month = spring;
|
break;
|
case fall:
|
month = summer;
|
break;
|
case winter:
|
month = fall;
|
break;
|
|
};
|
|
return new Date(year, month, 1);
|
};
|
|
/**
|
* 得到上季度的起止日期
|
* **/
|
this.getPreviousSeason = function() {
|
//起止日期数组
|
var startStop = new Array();
|
//获取当前时间
|
var currentDate = this.getCurrentDate();
|
//获得当前月份0-11
|
var currentMonth = currentDate.getMonth();
|
//获得当前年份4位年
|
var currentYear = currentDate.getFullYear();
|
//上季度的第一天
|
var priorSeasonFirstDay = this.getPriorSeasonFirstDay(currentYear, currentMonth);
|
//上季度的最后一天
|
var priorSeasonLastDay = new Date(priorSeasonFirstDay.getFullYear(), priorSeasonFirstDay
|
.getMonth() + 2, this.getMonthDays(priorSeasonFirstDay.getFullYear(), priorSeasonFirstDay
|
.getMonth() + 2));
|
//添加至数组
|
startStop.push(priorSeasonFirstDay);
|
startStop.push(priorSeasonLastDay);
|
return startStop;
|
};
|
|
/**
|
* 得到去年的起止日期
|
* **/
|
this.getPreviousYear = function() {
|
//起止日期数组
|
var startStop = new Array();
|
//获取当前时间
|
var currentDate = this.getCurrentDate();
|
//获得当前年份4位年
|
var currentYear = currentDate.getFullYear();
|
currentYear--;
|
var priorYearFirstDay = new Date(currentYear, 0, 1);
|
var priorYearLastDay = new Date(currentYear, 11, 1);
|
//添加至数组
|
startStop.push(priorYearFirstDay);
|
startStop.push(priorYearLastDay);
|
return startStop;
|
};
|
|
/**
|
* 与当前时间对比
|
* @param {Object} d2
|
*/
|
this.getDataCompare = function(d2) {
|
//当前时间
|
let d1 = new Date();
|
|
//转换为标准时间"2019/12/29 23:59:59"
|
d2 = d2.replace(/-/g, "/");
|
d2 = new Date(d2);
|
|
//如果当前时间大于到期时间
|
//valueOf() 函数返回指定对象的原始值,这里返回以毫秒数存储的时间值
|
return d1.valueOf() > d2.valueOf()
|
}
|
return this;
|
|
})();
|
module.exports = dateRangeUtil;
|