这与另一个问题 (Generate random date between two dates and times in Javascript) 类似,但要处理“待定”约会,您还需要一种方法在 明天 和从明天起的一周 之间找到一天.
此函数将返回传递给它的日期 8:00 到 17:00 之间的随机时间戳:
var randomTimeInWorkday = function(date) {
var begin = date;
var end = new Date(begin.getTime());
begin.setHours(8,0,0,0);
end.setHours(17,0,0,0);
return Math.random() * (end.getTime() - begin.getTime()) + begin.getTime();
}
要获得今天 08:00 到 17:00 之间的随机时间戳,您可以这样做:
var today = new Date();
var timestamp = randomTimeInWorkday(today);
console.log(timestamp); // 1457033914204.1597
console.log(new Date(timestamp)); // Thu Mar 03 2016 14:38:34 GMT-0500 (EST)
此函数将返回一个介于明天和从明天开始的一周之间的随机日期,作为传递给它的日期:
var randomDayStartingTomorrow = function(date) {
var begin = new Date(date.getTime() + 24 * 60 * 60 * 1000);
var end = new Date(begin.getTime());
end.setDate(end.getDate() + 7);
return new Date(Math.random() * (end.getTime() - begin.getTime()) + begin.getTime());
}
要在明天和明天之后的一周之间的任意一天获取 08:00 到 17:00 之间的随机时间戳,您可以这样做:
var today = new Date();
var randomDay = randomDayStartingTomorrow(today);
var timestamp = randomTimeInWorkday(randomDay);
console.log(timestamp); // 1457194668335.3162
console.log(new Date(timestamp)); // Sat Mar 05 2016 11:17:48 GMT-0500 (EST)