Разница между Date.getTime () и getTimer - PullRequest
4 голосов
/ 07 сентября 2011

Как рассчитывается время работы виртуальной машины и как рассчитывается системное время?Я знаю, что могу узнать текущее время работы AVM, позвонив по телефону:

getTimer();

И я могу узнать текущее системное время Unix, выполнив:

new Date().getTime();

Я знаю, что класс Timer и событие Event.ENTER_FRAME имеют свои взлеты и падения, но я полагал, что 2 сравниваемых значения должны оставаться последовательно относительно друг друга.Вот как я это тестирую:

private var _appRunTime:int;
private var _appStartTime:int;
private var _systemTime:int;
private var _systemCurrentTime:int;

//called at application launch
protected function application1_creationCompleteHandler(event:FlexEvent):void
{
    _systemTime = new Date().getTime();
    _appStartTime = getTimer();
}

//called on button click to see values
protected function button1_clickHandler(event:MouseEvent):void
{
    _systemCurrentTime = new Date().getTime();
    _appRunTime = getTimer();

    trace(_systemCurrentTime - _systemTime, _appRunTime - _appStartTime);
}

Я не понимаю, почему эти числа медленно теряют синхронизацию.Используя этот код, я обнаружил, по крайней мере на моем компьютере, что значения растут отдельно друг от друга примерно на 3 миллисекунды в минуту, причем значение, полученное из системного времени, является более высоким значением, а значение, полученное из времени AVM, являетсяниже.

Может ли кто-нибудь дать мне объяснение, на что они рассчитаны и почему с течением времени будет небольшой, но растущий разрыв в их значениях?

Ответы [ 3 ]

1 голос
/ 11 октября 2011

В моей системе один и тот же код не дает разницы между getTimer() и getTime() через ~ 10 минут разница всегда между 0 и 1 мс.

Может быть, это проблема вашей системы или специфики вашего плеера?

Я использую Flash Player 11 на Win 7 x64.

0 голосов
/ 04 декабря 2012

Это тебе поможет ...

public static function getDaysBetweenDates(date1:Date,date2:Date):int
{
    var one_day:Number = 1000 * 60 * 60 * 24
    var date1_ms:Number = date1.getTime();
    var date2_ms:Number = date2.getTime();          
    var difference_ms:Number = Math.abs(date1_ms - date2_ms)            
    return Math.round(difference_ms/one_day);
}
0 голосов
/ 18 апреля 2012

На моем компьютере (64-разрядная версия Win 7) иногда getTimer работает медленнее, чем Date.getTime() (системное время), но иногда getTimer() работает быстрее.Разница может варьироваться от -0,57 мс / с до 0,1 мс / с.

Результат не зависит от запуска в браузере или в автономном проигрывателе Flash.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...