Necesito en JavaScript o TypeScript para Angular que la fecha de inicio ingresada no sea mayor a 60 días para la fecha de finalización ingresada... la lógica sería: "rango máximo de 60 días" entre las dos entradas (dateFrom a dateTo). Hola, necesito JS o Angular TS para que la fecha de inicio ingresada no sea mayor a 60 días para la fecha de finalización ingresada... la lógica sería: "rango máximo 60 días" para las entradas.
datepicker(){ var dateFrom = this.consultaForm.get('desdeCreacion').value; var dateTo = this.consultaForm.get('hastaCreacion').value; if(dateTo > (dateFrom < this.datePipe.transform(new Date(dateTo).getTime()-5100000000), 'yyyy-MM-dd')){ alert('Rango máximo 60 dias'); window.location.reload();} }¡Gracias! Adapté tus respuestas y lo resolví así:
// Rango máximo 60 dias (sweetalert2) var dateFrom60 = this.datePipe.transform(new Date(dateFrom).getTime()+5150000000,'yyyy-MM-dd'); if(dateTo > dateFrom60){ this.hasta.reset(); Swal.fire({ icon: 'error', title: 'Rango máximo 60 días' }) }Podría crear una función de utilidad solo para calcular las diferencias en dos fechas, así:
// Assuming fromDate and toDate are Date objects // Otherwise you could convert them to Dates and pass here function dayDifference(fromDate, toDate) { return Math.floor((toDate - fromDate)/(1000 * 60 * 60 * 24)) // Convert milliseconds to days }Y luego usa esto en tu lógica de validación, así:
if(dayDifference(dateFrom, dateTo) <= 60) { alert('Rango máximo 60 dias'); window.location.reload();} }Siento que hay una solución mejor, pero puede utilizar el objeto de fecha y manipular la fecha.
datepicker(){ var dateFrom = new Date(this.consultaForm.get('desdeCreacion').value); var dateTo = new Date(this.consultaForm.get('hastaCreacion').value); if(dateTo > new Date(dateFrom.setDate(dateFrom.getDate() + 60)) ){ alert('Rango máximo 60 dias'); window.location.reload();} }