我有一个日期选择器,我显示两个月,我想在每个可见月份中随机选择3个日期
$('.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
});
这是我的计算
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
}
答案 0 :(得分:200)
也许我错过了什么,但不是吗?
function randomDate(start, end) {
return new Date(start.getTime() + Math.random() * (end.getTime() - start.getTime()));
}
randomDate(new Date(2012, 0, 1), new Date())
答案 1 :(得分:12)
new Date(+(new Date()) - Math.floor(Math.random()*10000000000))
答案 2 :(得分:1)
您可以将边界日期转换为整数(Date.getTime()
),然后使用Math.random()
在给定边界内生成随机日期。然后使用Date
返回Date.setTime()
个对象。
答案 3 :(得分:0)
使用 Moment.js 和& @Demven Weir的答案来获取字符串值,例如“ 03/02/1975”。
moment(new Date(+(new Date()) - Math.floor(Math.random()*10000000000)))
.format('MM/DD/YYYY');
注意::每次都添加一个零,以延长生产年份。
答案 4 :(得分:0)
function generateRandomDate() {
return new Date(+(new Date()) - Math.floor(Math.random() * 10000000000));
}
(new generateRandomDate()).toLocaleDateString('en-US')
您将获得美国格式的随机日期 4/25/2021
在 jsfiddle
上查看此演示