如何在日期范围AS3中选择随机日期

时间:2011-06-13 15:32:18

标签: actionscript-3 datetime date random

我正试图在日期范围内得到一个随机日期,这是我到目前为止但它似乎没有工作? 我在哪里错了?

//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)
                            }

1 个答案:

答案 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;
}