| | |
| | | // 获取当前时间精确至[年、月、日、时、分、秒]
|
| | | let nTime = new Date();
|
| | | let nYear = nTime.getFullYear();
|
| | | let nMouth = nTime.getMonth() + 1;
|
| | | let nMonth = nTime.getMonth() + 1; |
| | | let nDay = nTime.getDate();
|
| | | let nHour = nTime.getHours();
|
| | | let nMin = nTime.getMinutes();
|
| | |
| | | this.getMinArr(ruleArr[1]);
|
| | | this.getHourArr(ruleArr[2]);
|
| | | this.getDayArr(ruleArr[3]);
|
| | | this.getMouthArr(ruleArr[4]);
|
| | | this.getMonthArr(ruleArr[4]); |
| | | this.getWeekArr(ruleArr[5]);
|
| | | this.getYearArr(ruleArr[6], nYear);
|
| | | // 将获取到的数组赋值-方便使用
|
| | |
| | | let mIdx = this.getIndex(mDate, nMin);
|
| | | let hIdx = this.getIndex(hDate, nHour);
|
| | | let DIdx = this.getIndex(DDate, nDay);
|
| | | let MIdx = this.getIndex(MDate, nMouth);
|
| | | let MIdx = this.getIndex(MDate, nMonth); |
| | | let YIdx = this.getIndex(YDate, nYear);
|
| | | // 重置月日时分秒的函数(后面用的比较多)
|
| | | const resetSecond = function () {
|
| | |
| | | nDay = DDate[DIdx]
|
| | | resetHour();
|
| | | }
|
| | | const resetMouth = function () {
|
| | | const resetMonth = function () { |
| | | MIdx = 0;
|
| | | nMouth = MDate[MIdx]
|
| | | nMonth = MDate[MIdx] |
| | | resetDay();
|
| | | }
|
| | | // 如果当前年份不为数组中当前值
|
| | | if (nYear !== YDate[YIdx]) {
|
| | | resetMouth();
|
| | | resetMonth(); |
| | | }
|
| | | // 如果当前月份不为数组中当前值
|
| | | if (nMouth !== MDate[MIdx]) {
|
| | | if (nMonth !== MDate[MIdx]) { |
| | | resetDay();
|
| | | }
|
| | | // 如果当前“日”不为数组中当前值
|
| | |
| | | goYear: for (let Yi = YIdx; Yi < YDate.length; Yi++) {
|
| | | let YY = YDate[Yi];
|
| | | // 如果到达最大值时
|
| | | if (nMouth > MDate[MDate.length - 1]) {
|
| | | resetMouth();
|
| | | if (nMonth > MDate[MDate.length - 1]) { |
| | | resetMonth(); |
| | | continue;
|
| | | }
|
| | | // 循环月份数组
|
| | | goMouth: for (let Mi = MIdx; Mi < MDate.length; Mi++) {
|
| | | goMonth: for (let Mi = MIdx; Mi < MDate.length; Mi++) { |
| | | // 赋值、方便后面运算
|
| | | let MM = MDate[Mi];
|
| | | MM = MM < 10 ? '0' + MM : MM;
|
| | |
| | | if (nDay > DDate[DDate.length - 1]) {
|
| | | resetDay();
|
| | | if (Mi == MDate.length - 1) {
|
| | | resetMouth();
|
| | | resetMonth(); |
| | | continue goYear;
|
| | | }
|
| | | continue;
|
| | |
| | | if (Di == DDate.length - 1) {
|
| | | resetDay();
|
| | | if (Mi == MDate.length - 1) {
|
| | | resetMouth();
|
| | | resetMonth(); |
| | | continue goYear;
|
| | | }
|
| | | continue goMouth;
|
| | | continue goMonth; |
| | | }
|
| | | continue;
|
| | | }
|
| | |
| | | // 判断日期的合法性,不合法的话也是跳出当前循环
|
| | | if (this.checkDate(YY + '-' + MM + '-' + thisDD + ' 00:00:00') !== true && this.dayRule !== 'workDay' && this.dayRule !== 'lastWeek' && this.dayRule !== 'lastDay') {
|
| | | resetDay();
|
| | | continue goMouth;
|
| | | continue goMonth; |
| | | }
|
| | | // 如果日期规则中有值时
|
| | | if (this.dayRule == 'lastDay') {
|
| | |
| | | if (Di == DDate.length - 1) {
|
| | | resetDay();
|
| | | if (Mi == MDate.length - 1) {
|
| | | resetMouth();
|
| | | resetMonth(); |
| | | continue goYear;
|
| | | }
|
| | | continue goMouth;
|
| | | continue goMonth; |
| | | }
|
| | | continue;
|
| | | }
|
| | |
| | | if (Di == DDate.length - 1) {
|
| | | resetDay();
|
| | | if (Mi == MDate.length - 1) {
|
| | | resetMouth();
|
| | | resetMonth(); |
| | | continue goYear;
|
| | | }
|
| | | continue goMouth;
|
| | | continue goMonth; |
| | | }
|
| | | continue goDay;
|
| | | }
|
| | |
| | | if (Di == DDate.length - 1) {
|
| | | resetDay();
|
| | | if (Mi == MDate.length - 1) {
|
| | | resetMouth();
|
| | | resetMonth(); |
| | | continue goYear;
|
| | | }
|
| | | continue goMouth;
|
| | | continue goMonth; |
| | | }
|
| | | continue goDay;
|
| | | }
|
| | |
| | | if (Di == DDate.length - 1) {
|
| | | resetDay();
|
| | | if (Mi == MDate.length - 1) {
|
| | | resetMouth();
|
| | | resetMonth(); |
| | | continue goYear;
|
| | | }
|
| | | continue goMouth;
|
| | | continue goMonth; |
| | | }
|
| | | continue goDay;
|
| | | }
|
| | |
| | | } //goMin
|
| | | }//goHour
|
| | | }//goDay
|
| | | }//goMouth
|
| | | }//goMonth |
| | | }
|
| | | // 判断100年内的结果条数
|
| | | if (resultArr.length == 0) {
|
| | |
| | | }
|
| | | },
|
| | | // 获取"月"数组
|
| | | getMouthArr(rule) {
|
| | | getMonthArr(rule) { |
| | | this.dateArr[4] = this.getOrderArr(1, 12);
|
| | | if (rule.indexOf('-') >= 0) {
|
| | | this.dateArr[4] = this.getCycleArr(rule, 12, false)
|