2012-10-10 64 views
6

Tôi đang cố gắng so sánh hai ngày datepicker và xem liệu chúng có cách nhau hơn 7 ngày hay không.So sánh Datepicker Ngày Javascript

Tôi làm như thế nào?

Tôi thường chỉ thấy sự khác biệt của chúng lớn hơn 7, nhưng điều đó sẽ không tính đến hàng tháng và như vậy.

Đây là mã của tôi:

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

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

Bất cứ lời khuyên ??

+0

này có vẻ là cùng một câu hỏi nhiều hơn hoặc ít hơn - http://stackoverflow.com/questions/73971/using-javascript-how-do-i-make-sure-a-date -range-is-valid – Pyro979

+1

Khi tôi cố gắng sử dụng giải pháp của mình, biến 'khác biệt' là NaN. Tôi có bị mất gì không? Tôi chỉ muốn xem nếu nó thực sự là bảy ngày ngoài – streetlight

Trả lời

16

Sử dụng $("#datepicker_xxx").datepicker("getDate") để nhận ngày được chọn làm Date. Sau đó, nó chỉ là vấn đề của

end - begin > 7 * 86400 * 1000 
+0

Điều này là tuyệt vời! Cảm ơn nhiều! – streetlight

2

// Kiểm tra phạm vi ngày, 86400000 là số mili giây trong một ngày

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

Hãy thử điều này:

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!') ; 
} 

Hy vọng nó sẽ làm việc . Cảm ơn. Để biết thêm chi tiết check it.

+0

Công việc của tôi dành cho tôi. –

0

này đang làm việc một cách hoàn hảo

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

Hãy thử điều này, DatePicker có chức năng formatDate tiện dụng mà tôi đã sử dụng để so sánh ngày dd/mm/yy:

$.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) 
     } 
    }); 
}); 

Từ: <input type="text" id="txtFromDate" />

Để: <input type="text" id="txtToDate" />

+0

Hãy thử đăng câu trả lời của bạn dưới dạng mã bằng cách thụt lề bằng ít nhất 4 dấu cách. Nó sẽ dễ đọc hơn. – Rias