Điều này thực sự là một vấn đề mà tôi đã thấy đến trước khi rất nhiều trong công việc của tôi và bit sau đây là câu trả lời của tôi cho vấn đề.
// checkDateRange - Checks to ensure that the values entered are dates and
// are of a valid range. By this, the dates must be no more than the
// built-in number of days appart.
function checkDateRange(start, end) {
// Parse the entries
var startDate = Date.parse(start);
var endDate = Date.parse(end);
// Make sure they are valid
if (isNaN(startDate)) {
alert("The start date provided is not valid, please enter a valid date.");
return false;
}
if (isNaN(endDate)) {
alert("The end date provided is not valid, please enter a valid date.");
return false;
}
// Check the date range, 86400000 is the number of milliseconds in one day
var difference = (endDate - startDate)/(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;
}
Bây giờ một vài điều cần lưu ý về mã này, Date.parse
chức năng nên làm việc cho hầu hết các loại đầu vào, nhưng đã được biết là có vấn đề với một số định dạng như "YYYY MM DD" vì vậy bạn nên kiểm tra trước khi sử dụng nó. Tuy nhiên, tôi dường như nhớ lại rằng hầu hết các trình duyệt sẽ giải thích chuỗi ngày tháng được đặt cho Date.parse dựa trên cài đặt vùng máy tính.
Ngoài ra, hệ số cho 86400000 phải là bất kể phạm vi ngày bạn đang tìm kiếm là. Vì vậy, nếu bạn đang tìm kiếm những ngày cách nhau ít nhất một tuần thì nó phải là bảy.
xin cập nhật từ khi bắt đầu và kết thúc checkDateRange (bắt đầu, kết thúc) của nó rất khó khăn để chk – John