如何判断数据库存储的hour、minute时间与当前时间差值在5分钟内
实现方案
你原有逻辑的问题是仅比对分钟数值,会出现跨小时判断错误的问题:比如当前时间是10:01,数据库存储的是09:58,实际差值只有3分钟,但原有计算会得到abs(1-58)=57,误判为不符合要求。
正确实现逻辑是将两个时间统一转换为当日累计总分钟数后再计算差值,即可解决跨小时比对问题,修改后的代码如下:
// 此处替换为你从数据库读取的字符串类型hour、minute字段 const dbHourStr = '替换为数据库存储的hour字段' const dbMinuteStr = '替换为数据库存储的minute字段' const today = new Date(); // 计算当前时间的当日总分钟数 const currentTotalMinutes = today.getHours() * 60 + today.getMinutes(); // 计算数据库存储时间的当日总分钟数 const dbTotalMinutes = Number(dbHourStr) * 60 + Number(dbMinuteStr); // 计算时间差:如果不需要兼容跨0点的场景,直接用该行计算即可 let timeDiff = Math.abs(currentTotalMinutes - dbTotalMinutes); // 【可选】如果需要兼容跨0点的场景(比如当前是00:02,数据库是23:59,实际差3分钟也符合要求),替换上面的timeDiff计算逻辑即可 // const maxDayMinutes = 24 * 60; // const diffVal = Math.abs(currentTotalMinutes - dbTotalMinutes); // timeDiff = Math.min(diffVal, maxDayMinutes - diffVal); if (timeDiff <= 5) { client.messages.create( { to: userPhoneNumber, from: "12055578708", body: "hello " + userNameString + ", \nYour training session just finished with " + trainerNameString }, function (err, data) { if (err) { console.log("err: " + err); } console.log(data); } ); } else { console.log("not working"); }
内容的提问来源于stack exchange,提问作者gianlps
相关产品推荐
相关产品推荐

