javascript - 在两个日期内生成随机日期数组的优雅方法

标签 javascript date random jquery-ui-datepicker

我有一个显示两个月的日期选择器,我想在每个可见月份中随机选择 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
}

最佳答案

也许我遗漏了什么,但这不是吗?

function randomDate(start, end) {
  return new Date(start.getTime() + Math.random() * (end.getTime() - start.getTime()));
}

const d = randomDate(new Date(2012, 0, 1), new Date());
console.log(d);

关于javascript - 在两个日期内生成随机日期数组的优雅方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9035627/

相关文章:

javascript - 多行标签 OpenLayers3

javascript - 在 Javascript 中函数完成后删除变量

sql - 在 Oracle 中查询以使用子查询进行选择

php - 使用时间戳或日期列类型将出生日期保存到 MYSQL DB

Java/Postgresql 获得接下来的 X 天

java - 用随机数创建一个数组

javascript - 如何在 Angular 中用另一个对象过滤对象?

javascript - 使用 Javascript 控制外部网页

c - C 中的循环内循环和随机生成

ios - 实例成员不能用于类型 'ViewController'