Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Вниз

Расчет времени! Нужна помощь...   Найти похожие ветки 

 
Zilog ©   (2004-03-24 14:21) [0]

короче вся задача такая: есть события вход и выход. время событий храню в real. Считаю за определенный промежуток дней, например за неделю, и все посчитанные промежутки плюсую в одну переменную: AllTime := AllTime+ OutTime  - InTime
изначально AllTime := 0.
как я предполагаю там собирается вся необходимая информация типа TDateTime. Вот мне отттуда и надо вытащить коол-во часов, и кол-во оставшихся минут....

часы вытаскиваю так:

h := AllTime/(1/24); (правильно?!)

нужно еще вытащить минуты..


 
Романов Р.В. ©   (2004-03-24 14:27) [1]

m := (AllTime*24 - h)*60


 
Digitman ©   (2004-03-24 14:37) [2]


> как я предполагаю там собирается вся необходимая информация
> типа TDateTime


TDataTime = double

непонятно почему выбран тип real .. сэкономил 2 байта что ли ? зато проиграл в точности и в общей производительности алгоритма


> часы вытаскиваю так:
>
> h := AllTime/(1/24); (правильно?!)


var
 Hour, Min, Sec, MSec: Word;

DecodeTime(AllTime, Hour, Min, Sec, MSec); //разложили дроб.часть на часы-минуты-секунды

//Trunc(AllTime) - целая часть, отражающая число полных суток
h := Trunc(AllTime) * 24 + Hour;


 
Романов Р.В. ©   (2004-03-24 14:41) [3]


> Digitman ©   (24.03.04 14:37) [2]

Real по умолчанию равен double


 
Digitman ©   (2004-03-24 14:44) [4]


> Романов Р.В. ©   (24.03.04 14:41) [3]


я почему-то посчитал, что речь идет о Real48

точность в выражении мысли в коде недвусмысленными идентификаторами - главное оружие программера)


 
Anatoly Podgoretsky ©   (2004-03-24 14:45) [5]

В сутках 24 часа, в часе 60 минут, в минуте 60 секунд, в секунде 1000 миллисекунд, все это хранится в TDateTime как сутки это целое. Можно пользоваться арифметическими операциями умножение и вычитания, мможноо функциями преобразования, в зависимости от того в каком виде нужен результат. Digitman привел функцию для разбиения дробной части на составляющие, а для преобразования целой части используй функцию TRUNC


 
Zilog ©   (2004-03-24 14:49) [6]

Еще один глюк обнаружил:
AllTime := AllTime+ OutTime  - InTime

в AllTime всегда целая часть получается ноль.... отчего то может быть?


 
Романов Р.В. ©   (2004-03-24 15:01) [7]


> в AllTime всегда целая часть получается ноль.... отчего
> то может быть?

OutTime  - InTime < 1



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.046 c
14-1079337120
Piter
2004-03-15 10:52
2004.04.11
Новый клиент для этого форума - Magic Forum beta2


14-1081758739
able
2004-04-12 12:32
2004.04.11
Как убрать ф-цию контроллера домена?


1-1079865144
Powerland Software
2004-03-21 13:32
2004.04.11
подмена кода DLL


14-1079683036
able
2004-03-19 10:57
2004.04.11
MySQL + PHP


1-1080204864
new
2004-03-25 11:54
2004.04.11
Индивидуальный номер





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский