Как выбрать случайную дату в диапазоне дат AS3 - PullRequest
0 голосов
/ 13 июня 2011

Я пытаюсь получить случайную дату в диапазоне дат, и это то, что у меня есть, но, похоже, оно не работает Где я, я иду не так ??

//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 (макс .: число, мин: число = 0): число { вернуть 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 голосов
/ 13 июня 2011

Я нашел пару ошибок в вашем коде.

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;
}
...