Tôi có một datepicker nơi tôi thấy hai tháng và tôi muốn một cách ngẫu nhiên chọn 3 ngày trong mỗi tháng có thể nhìn thấyphương pháp Elegant để tạo mảng các ngày ngẫu nhiên trong vòng hai ngày
$('.date').datepicker({
minDate: new Date(),
dateFormat: 'DD, MM, d, yy',
constrainInput: true,
beforeShowDay: processDates,
numberOfMonths: 2,
showButtonPanel: true,
showOn: "button",
buttonImage: "images/calendar_icon.jpg",
buttonImageOnly: true
});
Đây là tính toán của tôi
var now = new Date();
var nowTime = parseInt(now.getTime()/1000);
var randomDateSet = {};
function getRandomSet(y,m) {
var monthIndex = "m"+y+""+m; // m20121 for Jan
if (randomDateSet[monthIndex]) return randomDateSet[monthIndex];
// generate here
.
. - I need this part
.
return randomDateSet[monthIndex];
}
function processDay(date) { // this is calculated for each day so we need a singleton for the array
var dateTime = parseInt(date.getTime()/1000);
if (dateTime <= (nowTime-86400)) {
return [false]; // earlier than today
}
var m = date.getMonth(), d = date.getDate(), y = date.getFullYear();
var randomDates = getRandomSet(y,m);
for (i = 0; i < randomDates.length; i++) {
if($.inArray((m+1) + '-' + d + '-' + y,randomDates) != -1 || new Date() > date) {
return [true,"highlight","Some message"];
}
}
return [true,"normal"]; // ordinary day
}
Có thể - bạn có thể làm điều đó trong 3 ngày mà không trùng lặp trong mỗi tháng không? – mplungjan
Bằng * chồng chéo * bạn có nghĩa là tạo cùng một ngày không? Không, mã này không ** không ** xử lý trường hợp này, về mặt lý thuyết nó có thể tạo ra cùng một ngày (đặc biệt là khi bạn cắt ngắn thời gian). Nhưng không khó để loại bỏ các bản sao. –
Chức năng liên quan để nhận được ngày một số ngày trước (hoặc sau) ngày đã cho: 'chức năng randomDateAfterDate (bắt đầu, ngày) { trả về ngày mới (start.getTime() + (Math.random() * ngày * 24 * 60 * 60 * 1000)); } ' –