|  | @@ -1689,37 +1689,50 @@ module.exports = {
 | 
	
		
			
				|  |  |          return str;
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |      calculateNextSendTime(startTime, intervalHours = 6, quietStart = 0, quietEnd = 8) {
 | 
	
		
			
				|  |  | -        function parseTime(timeStr, day = 0) {
 | 
	
		
			
				|  |  | +        function parseTime(stime, timeStr, day = 0) {
 | 
	
		
			
				|  |  |              const [hours, minutes] = timeStr.split(':').map(Number);
 | 
	
		
			
				|  |  |              const date = new Date();
 | 
	
		
			
				|  |  | -            date.setDate(date.getDate() + day);
 | 
	
		
			
				|  |  | +            date.setDate(stime.getDate() + day);
 | 
	
		
			
				|  |  |              date.setHours(hours, minutes, 0, 0); // Set hours and minutes, reset seconds and milliseconds
 | 
	
		
			
				|  |  |              return date;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +        function calculateHoursBetween(start, end) {
 | 
	
		
			
				|  |  | +            // 将时间字符串转换为 Date 对象
 | 
	
		
			
				|  |  | +            const startTime = new Date(`2000-01-01T${start}`);
 | 
	
		
			
				|  |  | +            const endTime = new Date(`2000-01-01T${end}`);
 | 
	
		
			
				|  |  | +            // 检查是否跨越了当前日期和隔天日期
 | 
	
		
			
				|  |  | +            if (endTime < startTime) {
 | 
	
		
			
				|  |  | +                endTime.setDate(endTime.getDate() + 1); // 将结束时间调整到隔天
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            // 计算两个时间之间的毫秒数差距
 | 
	
		
			
				|  |  | +            const timeDifference = endTime - startTime;
 | 
	
		
			
				|  |  | +            // 将毫秒数转换为小时并返回
 | 
	
		
			
				|  |  | +            const hours = timeDifference / (1000 * 60 * 60);
 | 
	
		
			
				|  |  | +            return 24 - hours;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |          // let startDateTime = parseTime(startTime);
 | 
	
		
			
				|  |  |          let startDateTime = startTime;
 | 
	
		
			
				|  |  |          let endDateTime = new Date(startDateTime.getTime() + intervalHours * 60 * 60 * 1000);
 | 
	
		
			
				|  |  |          if (quietStart && quietEnd) {
 | 
	
		
			
				|  |  |              quietStart = (quietStart < 10 ? '0' + quietStart : quietStart) + ':00';
 | 
	
		
			
				|  |  |              quietEnd = (quietEnd < 10 ? '0' + quietEnd : quietEnd) + ':00';
 | 
	
		
			
				|  |  | -            let quietStartDateTime = parseTime(quietStart);
 | 
	
		
			
				|  |  | -            let quietEndDateTime = parseTime(quietEnd);
 | 
	
		
			
				|  |  | +            let quietStartDateTime = parseTime(startDateTime, quietStart);
 | 
	
		
			
				|  |  | +            let quietEndDateTime = parseTime(startDateTime, quietEnd);
 | 
	
		
			
				|  |  |              if (quietEndDateTime <= quietStartDateTime) {
 | 
	
		
			
				|  |  |                  quietEndDateTime.setDate(quietEndDateTime.getDate() + 1);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              // 判断非屏蔽时间内是否大于间隔时间,大于则要再隔天发送
 | 
	
		
			
				|  |  | -            const hours = this.calculateHoursBetween(quietStart, quietEnd);
 | 
	
		
			
				|  |  | +            const hours = calculateHoursBetween(quietStart, quietEnd);
 | 
	
		
			
				|  |  |              if (hours < intervalHours) {
 | 
	
		
			
				|  |  |                  // 除法算出差的天数
 | 
	
		
			
				|  |  |                  const days = Math.floor(intervalHours / hours);
 | 
	
		
			
				|  |  | -                quietStartDateTime = parseTime(quietStart, days);
 | 
	
		
			
				|  |  | -                quietEndDateTime = parseTime(quietEnd, days);
 | 
	
		
			
				|  |  | +                quietStartDateTime = parseTime(startDateTime, quietStart, days);
 | 
	
		
			
				|  |  | +                quietEndDateTime = parseTime(startDateTime, quietEnd, days);
 | 
	
		
			
				|  |  |                  intervalHours %= hours;
 | 
	
		
			
				|  |  |                  startDateTime.setDate(startDateTime.getDate() + days);
 | 
	
		
			
				|  |  |              } else if (startDateTime >= quietEndDateTime) {
 | 
	
		
			
				|  |  | -                quietStartDateTime = parseTime(quietStart, 1);
 | 
	
		
			
				|  |  | +                quietStartDateTime = parseTime(startDateTime, quietStart, 1);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |              if (quietEndDateTime <= quietStartDateTime) {
 | 
	
		
			
				|  |  |                  quietEndDateTime.setDate(quietEndDateTime.getDate() + 1);
 | 
	
		
			
				|  |  |              }
 | 
	
	
		
			
				|  | @@ -1737,18 +1750,4 @@ module.exports = {
 | 
	
		
			
				|  |  |          //     endDateTime.getMinutes().toString().padStart(2, '0');
 | 
	
		
			
				|  |  |          return endDateTime;
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | -    calculateHoursBetween(start, end) {
 | 
	
		
			
				|  |  | -        // 将时间字符串转换为 Date 对象
 | 
	
		
			
				|  |  | -        const startTime = new Date(`2000-01-01T${start}`);
 | 
	
		
			
				|  |  | -        const endTime = new Date(`2000-01-01T${end}`);
 | 
	
		
			
				|  |  | -        // 检查是否跨越了当前日期和隔天日期
 | 
	
		
			
				|  |  | -        if (endTime < startTime) {
 | 
	
		
			
				|  |  | -            endTime.setDate(endTime.getDate() + 1); // 将结束时间调整到隔天
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        // 计算两个时间之间的毫秒数差距
 | 
	
		
			
				|  |  | -        const timeDifference = endTime - startTime;
 | 
	
		
			
				|  |  | -        // 将毫秒数转换为小时并返回
 | 
	
		
			
				|  |  | -        const hours = timeDifference / (1000 * 60 * 60);
 | 
	
		
			
				|  |  | -        return 24 - hours;
 | 
	
		
			
				|  |  | -    },
 | 
	
		
			
				|  |  |  };
 |