/** * 获取对应的日期开始和结束时间 * @type {{convert: dateRangeUtils.convert}} */ let now = new Date(); //当前日期 let nowDayOfWeek = now.getDay()-1; //今天本周的第几天 let nowDay = now.getDate(); //当前日 let nowMonth = now.getMonth(); //当前月 let nowYear = now.getYear(); //当前年 nowYear += (nowYear < 2000) ? 1900 : 0; // let lastMonthDate = new Date(); //上月日期 lastMonthDate.setDate(1); lastMonthDate.setMonth(lastMonthDate.getMonth() - 1); let lastYear = lastMonthDate.getFullYear(); let lastMonth = lastMonthDate.getMonth(); const dateRangeUtils ={ //格式化日期 formatDate:(date)=>{ let myYear = date.getFullYear(); let myMonth = date.getMonth() + 1; let myWeekday = date.getDate(); if (myMonth < 10) { myMonth = "0" + myMonth; } if (myWeekday < 10) { myWeekday = "0" + myWeekday; } return (myYear + "-" + myMonth + "-" + myWeekday); }, //获得某月的天数 getMonthDays:(myYear,myMonth)=>{ let monthStartDate = new Date(myYear, myMonth, 1); let monthEndDate = new Date(myYear, myMonth + 1, 1); let days = (monthEndDate - monthStartDate) / (1000 * 60 * 60 * 24); return days; }, //获得本季度的开始月份 getQuarterStartMonth:()=>{ let quarterStartMonth = 0; if (nowMonth < 3) { quarterStartMonth = 0; } if (2 < nowMonth && nowMonth < 6) { quarterStartMonth = 3; } if (5 < nowMonth && nowMonth < 9) { quarterStartMonth = 6; } if (nowMonth > 8) { quarterStartMonth = 9; } return quarterStartMonth; }, //今日 getCurrentDate:()=>{ let getCurrentDate = new Date(nowYear, nowMonth, nowDay); return dateRangeUtils.formatDate(getCurrentDate) }, //昨日 getYesterdayDate:()=>{ let getYesterdayDate = new Date(nowYear, nowMonth, nowDay - 1); return dateRangeUtils.formatDate(getYesterdayDate); }, //获得本周的开始日期和结束日期 getCurrentWeekRange:()=>{ let timeRange = new Array(); let weekStartDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek); let weekEndDate = new Date(nowYear, nowMonth, nowDay + (6 - nowDayOfWeek)); timeRange.push(dateRangeUtils.formatDate(weekStartDate)); timeRange.push(dateRangeUtils.formatDate(weekEndDate)); return timeRange; }, //获得上周的开始日期和结束日期 getLastWeekRange:()=> { let timeRange = new Array(); let weekStartDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek - 7); let weekEndDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek - 1); timeRange.push(dateRangeUtils.formatDate(weekStartDate)); timeRange.push(dateRangeUtils.formatDate(weekEndDate)); return timeRange; }, //获得本月的开始日期和结束时间 getCurrentMonthRange:()=> { let timeRange = new Array(); let monthStartDate = new Date(nowYear, nowMonth, 1); let monthEndDate = new Date(nowYear, nowMonth, dateRangeUtils.getMonthDays(nowYear,nowMonth)); timeRange.push(dateRangeUtils.formatDate(monthStartDate)); timeRange.push(dateRangeUtils.formatDate(monthEndDate)); return timeRange; }, //获得上月开始时间和结束时间 getLastMonthRange:()=> { let timeRange = new Array(); let lastMonthStartDate = new Date(lastYear, lastMonth, 1); let lastMonthEndDate = new Date(lastYear, lastMonth, dateRangeUtils.getMonthDays(lastYear,lastMonth)); timeRange.push(dateRangeUtils.formatDate(lastMonthStartDate)); timeRange.push(dateRangeUtils.formatDate(lastMonthEndDate)); return timeRange; }, //本季度的开始日期 结束日期 getCurrentQuarterRange:()=> { let timeRange = new Array(); //本季度开始 let quarterStartDate = new Date(nowYear, dateRangeUtils.getQuarterStartMonth(), 1); //本季度结束 let quarterEndMonth = dateRangeUtils.getQuarterStartMonth() + 2; let quarterEndDate = new Date(nowYear, quarterEndMonth, dateRangeUtils.getMonthDays(nowYear,quarterEndMonth)); timeRange.push(dateRangeUtils.formatDate(quarterStartDate)); timeRange.push(dateRangeUtils.formatDate(quarterEndDate)); return timeRange; }, //上季度的第一天 getLastQuarterFirstDay:(year, month)=> { let spring = 0; //春 let summer = 3; //夏 let fall = 6; //秋 let 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); }, /** * 得到上季度的起止日期 * **/ getLastQuarterRange:()=> { //起止日期数组 let timeRange = new Array(); //获取当前时间 let currentDate = new Date(nowYear, nowMonth, nowDay); //获得当前月份0-11 let currentMonth = currentDate.getMonth(); //获得当前年份4位年 let currentYear = currentDate.getFullYear(); //上季度的第一天 let priorSeasonFirstDay = dateRangeUtils.getLastQuarterFirstDay(currentYear, currentMonth); //上季度的最后一天 let priorSeasonLastDay = new Date(priorSeasonFirstDay.getFullYear(), priorSeasonFirstDay.getMonth() + 2, dateRangeUtils.getMonthDays(priorSeasonFirstDay.getFullYear(), priorSeasonFirstDay.getMonth() + 2)); //添加至数组 timeRange.push(dateRangeUtils.formatDate(priorSeasonFirstDay)); timeRange.push(dateRangeUtils.formatDate(priorSeasonLastDay)); return timeRange; }, //上半年开始时间 getPrevHalfYear:()=>{ let timeRange = new Array(); timeRange.push(nowYear + '-01-01'); timeRange.push(nowYear + '-06-30'); return timeRange; }, //下半年开始时间 getNextHalfYear:()=>{ let timeRange = new Array(); timeRange.push(nowYear + '-07-01'); timeRange.push(nowYear + '-12-31'); return timeRange; }, //全年开始时间结束时间 getCurrentYearRange:()=>{ let timeRange = new Array(); //获取当前时间 let currentDate = new Date(nowYear, nowMonth, nowDay); //获得当前年份4位年 let currentYear = currentDate.getFullYear(); //本年第一天 let currentYearFirstDate = new Date(currentYear, 0, 1); //本年最后一天 let currentYearLastDate = new Date(currentYear, 11, 31); timeRange.push(dateRangeUtils.formatDate(currentYearFirstDate)); timeRange.push(dateRangeUtils.formatDate(currentYearLastDate)); return timeRange; }, format:(date,fmt)=>{ let 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(let 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; }, 获取两个时间相邻的数组 type:目前可传"yyyy-MM-dd hh" "yyyy-MM-dd" "yyyy-MM"格式的时间 getTimeArr:(begin,end,type,interval)=>{ let arr=[]; let beginDate; let endDate; let msCount; if(type=="yyyy-MM-dd hh"){//设置小时间隔 beginDate=new Date(begin+" 00:00"); endDate=new Date(end+" 23:59"); msCount=interval*60*60*1000; //1小时 2小时 3小时 }else if(type=="yyyy-MM-dd hh:mm"){//设置分钟间隔 beginDate=new Date(begin+" 00:00"); endDate=new Date(end+" 23:59"); msCount=interval*60*1000; //30分钟 10分钟 5分钟 15分钟 }else if(type=="yyyy-MM-dd"){//设置天间隔 beginDate=new Date(begin+" 00:00"); endDate=new Date(end+" 00:00"); msCount=interval*24*60*60*1000; //1天 2天 3天 }else if(type=="yyyy-MM"){//获取月间隔 let startDate=begin.split("-"); let endDate1=end.split("-"); let intervalMonth = (parseInt(endDate1[0]*12)+parseInt(endDate1[1])) - (parseInt(startDate[0]*12)+parseInt(startDate[1])); arr=dateRangeUtils.getMonthArr(end,intervalMonth+1); return arr; }else if(type=="yyyy"){//获取年间隔 for(let i=parseInt(begin);i<=parseInt(end);i++){ arr.push(i.toString()); } return arr; } let beginMs=beginDate.getTime(); let endMs=endDate.getTime(); for(let i=beginMs;i<=endMs;i+=msCount){ if(type=="yyyy-MM-dd hh"){ arr.push(dateRangeUtils.format(new Date(i),type)+":00"); }else if(type=="yyyy-MM-dd hh:mm"){ arr.push(dateRangeUtils.format(new Date(i),type)); } else if(type=="yyyy-MM-dd"){ arr.push(dateRangeUtils.format(new Date(i),type)); } } return arr; }, //得到最近n个月份的数组 getMonthArr:(sDate,n)=>{ let arr=[]; sDate=sDate.slice(0,7); arr.push(sDate); while(n>1){ arr.unshift(dateRangeUtils.getBeforMonth(sDate)); sDate=dateRangeUtils.getBeforMonth(sDate); n--; } return arr; }, getBeforMonth:(date)=>{ let lastMonth=""; let year=date.split("-")[0],month=date.split("-")[1]; if(month==1){ lastMonth=(year-1)+"-"+12; }else{ lastMonth=year+"-"+(month-1<10?('0'+(month-1)):month-1); } return lastMonth; } } export default dateRangeUtils;
获取常用时间的开始时间和结束时间及两个时间之间时间数组
最新推荐文章于 2022-05-17 19:04:59 发布