我正试图在日期范围内得到一个随机日期,这是我到目前为止但它似乎没有工作? 我在哪里错了?
//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; }
//获取一个随机数 function randomRange(max:Number,min:Number = 0):Number { 返回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)
}
答案 0 :(得分:0)
我在你的代码中发现了一些错误。
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;
}