我试图在一个日期范围内获得一个随机日期,这就是我目前所拥有的,但似乎不起作用??我哪里错了??
//Gets the date difference
private function differenceBetweenDates(date1:Date, date2:Date):Number{
var MS_PER_DAY:uint = 1000 * 60 * 60 * 24;
var tempDate:Date = new Date(date2.time - date1.time);
var difference:Number =
Math.abs(Math.round((tempDate.time / MS_PER_DAY)));
return difference; }
//获取一个随机数函数randomRange(max:Number,min:Number=0):数字{return Math.round(Math.random()*(max-min)+min);}
protected function getRandomDate:void {
// TODO Auto-generated method stub
var dat1:Date= new Date();
var dat2:Date = new Date(1989, 4, 16)
var num:Number = new Number(differenceBetweenDates(dat2,dat1));
var random:Number= new Number(randomRange(num));
currDate.setDate(dat2.date+random);
getComic(formatDate(currDate));
dat2 = new Date(1989, 4, 16)
}
我在您的代码中发现了几个错误。
currDate.setDate(dat2.date+random)
setDate
设置月份中的日期,而不是任意的时间日期。此外,您希望使用dat2.time
,而不是dat2.date
。
应该是
currDate.setTime(dat2.time+random)
这里有一个稍微不同的版本,你可能想试试。我删除了MS_PER_DAY计算,所以,如果你需要的话,你可能想把它添加回来,但我发现这更容易查看:
public function getRandomTimeBetweenDates(date1:Date, date2:Date):Number
{
return Math.round(Math.random() * (Math.abs(date2.time - date1.time)));
}
public function getRandomDate():Date {
var dat1:Date= new Date();
var dat2:Date = new Date(1989, 4, 16)
dat2.setTime(dat2.time + getRandomTimeBetweenDates(dat2,dat1));
return dat2;
}