Tengo un montón de marcas de tiempo formateadas como esta
const dates = ['2021.6.01', '2021.6.11', '2021.9.02']Quería escribir una utilidad que me dijera si una fecha con ese formato está dentro de los últimos X días de otra fecha.
Por ejemplo, 2021.6.10 está dentro de los últimos 7 días de 2021.6.12 mientras que 2021.6.01 no está dentro de los últimos 7 días de 2021.6.12 .
Pensé que la interfaz API sería, pero no dude en sugerir una mejor denominación
function isWithinTheLastDays(originalDate, date, days)Me resultó muy complicado implementarlo a mano y hay muchos casos extremos.
Analice las fechas con el constructor Date , reste las dos fechas y convierta la diferencia de milisegundos en días (dividiendo entre 86400000), luego verifique si es menor o igual a days :
function isWithinTheLastDays(originalDate, date, days){ return (new Date(date) - new Date(originalDate)) / 86400000 <= days; } console.log(isWithinTheLastDays('2021.6.10', '2021.6.12', 7)) //2 day diff console.log(isWithinTheLastDays('2021.6.10', '2021.6.17', 7)) //7 day diff console.log(isWithinTheLastDays('2021.6.10', '2021.6.18', 7)) //8 day diffPuedes probar esto:
Nota: esto devolverá verdadero si las fechas son X días posteriores y anteriores a la fecha que configuró
const dates = ['2021.08.26', '2021.6.11', '2021.9.02'] function isWithinDays({ originalDate, date, range }) { return parseInt(((new Date(date) - new Date(originalDate)) / (1000 * 60 * 60 * 24)), 10) <= range && parseInt(((new Date(date) - new Date(originalDate)) / (1000 * 60 * 60 * 24)), 10) >= 0 ? true : false } for (var i = 0; i < dates.length; i++) { console.log(isWithinDays({ originalDate: dates[i], date: new Date('2021-08-27'), range: 10 })) }convertirlo a la marca de tiempo de Unix y restarlo
function isWithinTheLastDays(originalDate, date, days){ if(Math.abs( new Date(date).getTime()/1000 - new Date(originalDate).getTime()/1000 )/60/60/24 >= days){ return true; }else{ return false; }; }