Tengo un sistema donde el usuario puede elegir un periodo donde después de este periodo gana por ejemplo + 2% de la suma que ha elegido. Si intenta hacer una acción con esta suma antes de la mitad del período pierde un porcentaje de su valor. Entonces, lo que quiero saber es cómo calcular la mitad de una fecha.
En mi ejemplo:
Tengo, por ejemplo, en una tabla mysql la fecha en que puso la suma y la fecha en que finalizará el período definido. Entonces, si es 24-2-2022 y elige en 6 meses, habrá dos datos en la base de datos 24-2-2022 y 24-8-2022 . Lo que he hecho hasta ahora es split() la fecha para separar el día, el mes y el año. Pero aquí estoy atascado porque no sé cómo comparar todo esto para ver si el período está a mitad de camino o no.
Puedes escribir una función. Pero primero debe convertir su cadena en una cadena de fecha válida. entonces puede usar el objeto de fecha.
d1 = "24-2-2022" d2 = "24-8-2022" function getDays(d1, d2) { _d1 = d1.split('-'); _d2 = d2.split('-'); date_1 = new Date(_d1[2] + '-' + _d1[1] + '-' + _d1[0]) date_2 = new Date(_d2[2] + '-' + _d2[1] + '-' + _d2[0]) return Math.floor((date_2 - date_1) / (1000*60*60*24)); } console.log(getDays(d1, d2) + " days")Puede usar los valores de día, mes y año para comparar si la diferencia entre el día de inicio y el día de hoy es mayor que la mitad de la diferencia entre el día de inicio y el día de finalización:
let startDate = new Date(2022,1,24); //months are 0-indexed let endDate = new Date(2022,7,24); let halfDif = (endDate - startDate) / 2; //new Date() => today let isTodayAtLeastHalfway = new Date() - startDate >= halfDif;