Tengo esto:
let minute = timeSplit[0]; let today = new Date(); if (Math.abs(today.getMinutes() - Number(minute)) <= 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"); } lo que hace es obtener el minuto actual (por ejemplo, el minuto 54 de la hora), y restarlo del minute que está en mi base de datos. Si mi minuto db está dentro de los 5 minutos del minuto actual, entonces haga la siguiente parte.
Sin embargo, en mi base de datos hay minute y hour . necesito verificar si la hora en mi base de datos está dentro de los 5 minutos de la hora actual. minute y la hour son solo valores de cadena. ¿Cómo puedo hacer esto?
Tiene la hora y el minuto y necesita verificar si eso está dentro de los 5 minutos de la hora actual.
Lo que puedes hacer es construir un objeto de fecha para el mismo día, pero usando el tiempo que tienes almacenado. Entonces, si tiene el minuto y la hora que desea comparar, puede hacer esto:
const today = new Date(); const myTime = new Date(today.getFullYear(), today.getMonth(), today.getDay(), hour, minute);Ahora tiene dos objetos de fecha que puede comparar. Cuando resta uno del otro, el resultado será en milisegundos, por lo que debe trabajar un poco para convertirlo en minutos. En este caso dividimos por 1000 para obtener segundos y luego dividimos por 60 para obtener minutos. Luego aplicas la función absoluta y compruebas si es menor que 5.
const difference = Math.abs((today - myTime) / 1000 / 60); if (difference <= 5) { // send message } else { // don't send the message now }