Necesito obtener la cantidad de milisegundos entre ahora y cualquier tiempo fijo en el futuro.
Este es un ejemplo de exactamente lo que necesito:
Por favor, ¿cómo puedo lograr esto usando momentjs o simplemente usando la fecha de Javascript vainilla?
Gracias.
La API de fecha de JavaScript puede hacer el trabajo con bastante facilidad.
Necesitarás:
Obtener la hora y los minutos actuales (logrado con el constructor Date() y los getHours() y getMinutes() )
Compruebe si la ocurrencia de la próxima hora en particular es hoy o no. Esto se hace comprobando si la hora actual es mayor que esa hora en particular. Si es así, sabemos que la próxima ocurrencia de esta hora es mañana. De lo contrario, verifique si los minutos son 0. Si es así, esa hora en particular es ahora. De lo contrario, es al día siguiente. Todo esto se simplifica enormemente con el uso de un operador ternario.
Calcule la diferencia simplemente restando el objeto Fecha futura por el objeto Fecha presente.
const now = new Date(); const hours = now.getHours(); const minutes = now.getMinutes(); var next6AM; var next12PM; var next9PM; next6AM = new Date(now.getFullYear(), now.getMonth(), now.getDate() + (hours > 5 || hours == 5 && minutes != 0 ? 1 : 0), 5); next12PM = new Date(now.getFullYear(), now.getMonth(), now.getDate() + (hours > 11 || hours == 11 && minutes != 0 ? 1 : 0), 12); next9PM = new Date(now.getFullYear(), now.getMonth(), now.getDate() + (hours > 20 || hours == 20 && inutes != 0 ? 1 : 0), 20); const next6AMdiff = next6AM - now; const next12PMdiff = next12PM - now; const next9PMdiff = next9PM - now; console.log('Milliseconds until next 6AM:', next6AMdiff) console.log('Milliseconds until next 12PM:', next12PMdiff) console.log('Milliseconds until next 9PM:', next9PMdiff)Aquí hay un ejemplo de cómo obtener el ms entre dos objetos de fecha.
Tenga en cuenta que convertir .valueAsDate en un objeto de fecha no es necesario porque el valor es un objeto de fecha de forma predeterminada.
Los objetos de fecha son "la cantidad de milisegundos que han transcurrido desde la medianoche del 1 de enero de 1970, UTC"
const $ = str => document.querySelector(str); $("button").addEventListener("click", () => { const date1 = new Date($("#d1").valueAsDate); const date2 = new Date($("#d2").valueAsDate); const msDiff = Math.abs(date1 - date2); $("#ms").textContent = msDiff; $("#day").textContent = msDiff / 1000 / 60 / 60 / 24; }); <input type="date" id="d1"> <input type="date" id="d2"> <button>diff</button> <p id="ms"></p> <p id="day"></p>