2012-10-10 35 views
6

Estoy tratando de comparar dos fechas datepicker y ver si están con más de 7 días de diferencia.Comparación de datepicker Fechas Javascript

¿Cómo podría hacer esto?

Normalmente solo vería si su diferencia es mayor que 7, pero eso no dará cuenta de meses y tal.

Aquí está mi código:

var datepickerBegin = $("#datepicker_start").val(); 
var datepickerEnd = $("#datepicker_to").val(); 

if (datepickerBegin - datepickerEnd > 7) { 
    alert('more than a week apart!') 
} 

Algún consejo ??

+0

esto parece ser la misma pregunta más o menos - http://stackoverflow.com/questions/73971/using-javascript-how-do-i-make-sure-a-date -range-is-valid – Pyro979

+1

Cuando trato de utilizar su solución, la variable 'diferencia' es NaN. ¿Estoy perdido en algo? Solo quiero ver si de hecho es siete días aparte – streetlight

Respuesta

16

Usa $("#datepicker_xxx").datepicker("getDate") para obtener la fecha escogida como Date. Entonces es sólo una cuestión de

end - begin > 7 * 86400 * 1000 
+0

¡Esto es genial! ¡Muchas gracias! – streetlight

2

// Comprobar el intervalo de fechas, 86400000 es el número de milisegundos en un día

var difference = (datepickerEnd- datepickerBegin)/(86400000 * 7); 
if (difference < 0) { 
    alert("The start date must come before the end date."); 
    return false; 
} 

if (difference <= 1) { 
    alert("The range must be at least seven days apart."); 
    return false; 
} 

return true; 
1

Prueba esto:

var datepickerBegin = $("#datepicker_start").val(); // lets, returning in mm/dd/yy format 
var datepickerEnd = $("#datepicker_to").val(); // lets, returning in mm/dd/yy format 

if (($.datepicker.parseDate('mm/dd/yy', datepickerBegin) - $.datepicker.parseDate('mm/dd/yy', datepickerEnd)) > 7) { 
alert('more than a week apart!') ; 
} 

espero que debería funcionar . Gracias. Para obtener más check it fuera.

+0

Su trabajo para mí. –

0

esto está funcionando perfectamente

function checkDateDifference(startDate, endDate) { 
    startDate = $.datepicker.parseDate('mm/dd/yy', startDate); 
    endDate = $.datepicker.parseDate('mm/dd/yy', endDate); 

    var difference = (endDate - startDate)/(86400000); 
    alert(difference) 
    if (difference < 0) { 
     showError("The start date must come before the end date."); 
     return false; 
    } 
    return true; 

} 
1

probar esto, DatePicker tiene una función formatDate útil que he utilizado para comparar las fechas dd/mm/aa:

$.datepicker.formatDate("dd/mm/yy",new Date("09/01/2014")) < $.datepicker.formatDate("dd/mm/yy", new Date("10/01/2014")); // Returns true 
 
$.datepicker.formatDate("dd/mm/yy",new Date("10/01/2014")) < $.datepicker.formatDate("dd/mm/yy", new Date("10/01/2014")); // Returns false 
 
$.datepicker.formatDate("dd/mm/yy",new Date("11/01/2014")) < $.datepicker.formatDate("dd/mm/yy", new Date("10/01/2014")); // Returns false

1
$(document).ready(function(){ 
    $("#txtFromDate").datepicker({ 
     minDate: 0, 
     maxDate: "+60D", 
     numberOfMonths: 2, 
     onSelect: function(selected) { 
      $("#txtToDate").datepicker("option","minDate", selected) 
     } 
    }); 
    $("#txtToDate").datepicker({ 
     minDate: 0, 
     maxDate:"+60D", 
     numberOfMonths: 2, 
     onSelect: function(selected) { 
      $("#txtFromDate").datepicker("option","maxDate", selected) 
     } 
    }); 
}); 

De: <input type="text" id="txtFromDate" />

Para: <input type="text" id="txtToDate" />

+0

Intenta publicar tu respuesta como código sangrándola con al menos 4 espacios. Será mejor leer entonces. – Rias

Cuestiones relacionadas