在两个日期之间生成随机日期数组的优雅方法 [英] Elegant method to generate array of random dates within two dates

查看:171
本文介绍了在两个日期之间生成随机日期数组的优雅方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个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 = {};

函数getRandomSet(y,m){
var monthIndex =m+ y ++ m; // m20121 for Jan
if(randomDateSet [monthIndex])return randomDateSet [monthIndex];
//生成这里

。 - 我需要这个部分

return randomDateSet [monthIndex];
}

函数processDay(date){//这是为了每一天计算,所以我们需要一个单一的数组
var dateTime = parseInt(date.getTime()/ 1000);
if(dateTime< =(nowTime-86400)){
return [false]; //早于今天
}
var m = date.getMonth(),d = date.getDate(),y = date.getFullYear();
var randomDates = getRandomSet(y,m); $($)

(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]; //普通日
}


解决方案

也许我我错过了一些东西,但这不是吗?

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

randomDate(new Date(2012,0,1),new Date())


I have a datepicker where I show two months and I want to randomly choose 3 dates in each visible month

  $('.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    
  });

Here is my calculation

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
}

解决方案

Maybe I am missing something, but isn't this it?

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

randomDate(new Date(2012, 0, 1), new Date())

这篇关于在两个日期之间生成随机日期数组的优雅方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆