Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Разница между двумя датами (http://www.flasher.ru/forum/showthread.php?t=209072)

ivent 08.10.2014 16:15

Разница между двумя датами
 
Написал фу-цию, которая должна выводить разницу между 2 датами в дням часах и минутах
Код AS3:

        public static function rTime(ctime:int,d:int,h:int, m:int):Array
                {
                        var createdate:Date = new Date(ctime * 1000)
                        var newdate:Date = DateUtilities.addTo(createdate, 0, 0, 1, 23, 0, 0, 0) // прибавление 1 дня 23 ч к времени создания
                        var elapsed:Date = new Date( newdate.time - Param.Lastdate.time )
                        if ( newdate.time > Param.Lastdate.time )
                        var pDate:Array = [elapsed.dayUTC, elapsed.hoursUTC, elapsed.minutesUTC,                    elapsed.secondsUTC,newdate.time]
                        else
                        var pDate:Array = [0, 0, 0, 0]
                        return pDate
                }

Разницу между часами и минутами показывает верную, но разница между днями нет ( в этом случае 5 дней )

GBee 08.10.2014 22:05

а не хотите elapsed сами поделить на константы и вытащить нужное?
Код AS3:

var elapsed:Number = newdate.time - Param.Lastdate.time;
var days:int = int(elapsed / 86400);
var hours:int = int((elapsed - days * 86400) / 3600);
var mins:int = int((elapsed - days * 86400 - hours * 3600) / 60);
var secs:int = elapsed - days * 86400 - hours * 3600 - mins * 60;


ivent 08.10.2014 22:32

Пользуясь вашим способом, получил ещё более не корректный ответ (1000 дней)

GBee 08.10.2014 22:39

Это же отлично, вы нашли небольшой баг в первой строке, который легко поправить :о)

time : Number
Число миллисекунд с полуночи 1 января 1970 года по всемирному скоординированному времени для объекта Date.

ivent 08.10.2014 23:02

Не понял вас

GBee 08.10.2014 23:15

это печалька
Код AS3:

var elapsed:Number = (newdate.time - Param.Lastdate.time) / 1000;
var days:int = int(elapsed / 86400);
var hours:int = int((elapsed - days * 86400) / 3600);
var mins:int = int((elapsed - days * 86400 - hours * 3600) / 60);
var secs:int = elapsed - days * 86400 - hours * 3600 - mins * 60;


ivent 08.10.2014 23:28

Большое спасибо.


Часовой пояс GMT +4, время: 02:39.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.