浏览代码

Merge branch 'dev' of http://192.168.1.41:3000/maixinrong/Calculation into dev

MaiXinRong 1 年之前
父节点
当前提交
9d47768db0
共有 2 个文件被更改,包括 22 次插入98 次删除
  1. 22 23
      app/extend/helper.js
  2. 0 75
      app/view/setting/user_permission_modal.ejs

+ 22 - 23
app/extend/helper.js

@@ -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;
-    },
 };

+ 0 - 75
app/view/setting/user_permission_modal.ejs

@@ -321,80 +321,5 @@
                 $('#wx-setting').modal('hide');
             });
         });
-
-        function calculateNextSendTime(startTime, intervalHours = 6, quietStart = "00:00", quietEnd = "08:00") {
-            function parseTime(timeStr, day = 0) {
-                const [hours, minutes] = timeStr.split(":").map(Number);
-                const date = new Date();
-                date.setDate(date.getDate() + day);
-                date.setHours(hours, minutes, 0, 0); // Set hours and minutes, reset seconds and milliseconds
-                return date;
-            }
-
-            // let startDateTime = parseTime(startTime);
-            let startDateTime = startTime;
-            let endDateTime = new Date(startDateTime.getTime() + intervalHours * 60 * 60 * 1000);
-            if (quietStart && quietEnd) {
-                let quietStartDateTime = parseTime(quietStart);
-                let quietEndDateTime = parseTime(quietEnd);
-                if (quietEndDateTime <= quietStartDateTime) {
-                    quietEndDateTime.setDate(quietEndDateTime.getDate() + 1);
-                }
-                // 判断非屏蔽时间内是否大于间隔时间,大于则要再隔天发送
-                const hours = calculateHoursBetween(quietStart, quietEnd);
-                if (hours < intervalHours) {
-                    // 除法算出差的天数
-                    const days = Math.floor(intervalHours / hours);
-                    quietStartDateTime = parseTime(quietStart, days);
-                    quietEndDateTime = parseTime(quietEnd, days);
-                    intervalHours %= hours;
-                    startDateTime.setDate(startDateTime.getDate() + days);
-                } else if (startDateTime >= quietEndDateTime) {
-                    quietStartDateTime = parseTime(quietStart, 1);
-                }
-
-                if (quietEndDateTime <= quietStartDateTime) {
-                    quietEndDateTime.setDate(quietEndDateTime.getDate() + 1);
-                }
-                if (startDateTime >= quietStartDateTime) {
-                    startDateTime = quietEndDateTime;
-                }
-                endDateTime = new Date(startDateTime.getTime() + intervalHours * 60 * 60 * 1000);
-                if (endDateTime >= quietStartDateTime && endDateTime < quietEndDateTime) {
-                    let timeIntoQuiet = (quietStartDateTime - startDateTime) / (60 * 60 * 1000);
-                    let remainingTime = intervalHours - timeIntoQuiet;
-                    endDateTime = new Date(quietEndDateTime.getTime() + remainingTime * 60 * 60 * 1000);
-                }
-            }
-
-            // return endDateTime.getHours().toString().padStart(2, '0') + ':' +
-            //     endDateTime.getMinutes().toString().padStart(2, '0');
-            return endDateTime;
-        }
-
-        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 firstSendTime = new Date("2024-1-12 19:23");
-        console.log(firstSendTime);
-        let secondSendTime = calculateNextSendTime(firstSendTime);
-
-        console.log("Second send time:", secondSendTime);
     });
 </script>