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

Вниз

DecodeTime missing in KOL   Найти похожие ветки 

 
Boguslaw Brandys   (2005-04-12 00:19) [0]

Hmm... DecodeTime would be useful to obtain difference beetwen two time points divided into count of hours,minutes,seconds,milliseconds.

DecodeDate exists in KOL but not DecodeTime.Why? Maybe someone would give an example ?


 
thaddy   (2005-04-12 19:21) [1]

interface
uses windows,kol,kolmath{??};

procedure DecodeTime(const DateTime: TDateTime; var Hour, Min, Sec, MSec: Word);

implementation

const
 HoursPerDay   = 24;
 MinsPerHour   = 60;
 SecsPerMin    = 60;
 MSecsPerSec   = 1000;
 MinsPerDay    = HoursPerDay * MinsPerHour;
 SecsPerDay    = MinsPerDay * SecsPerMin;
 MSecsPerDay   = SecsPerDay * MSecsPerSec;
 FMSecsPerDay: Single = MSecsPerDay;
 IMSecsPerDay: Integer = MSecsPerDay;

function DateTimeToTimeStamp(DateTime: TDateTime): TTimeStamp;
asm
       PUSH    EBX
       XOR     EBX,EBX
       MOV     ECX,EAX
       FLD     DateTime
       FMUL    [EBX].FMSecsPerDay
       SUB     ESP,8
       FISTP   QWORD PTR [ESP]
       FWAIT
       POP     EAX
       POP     EDX
       OR      EDX,EDX
       JNS     @@1
       NEG     EDX
       NEG     EAX
       SBB     EDX,0
       DIV     [EBX].IMSecsPerDay
       NEG     EAX
       JMP     @@2
@@1:    DIV     [EBX].IMSecsPerDay
@@2:    ADD     EAX,DateDelta
       MOV     [ECX].TTimeStamp.Time,EDX
       MOV     [ECX].TTimeStamp.Date,EAX
       POP     EBX
end;

procedure DecodeTime(const DateTime: TDateTime; var Hour, Min, Sec, MSec: Word);
var
 MinCount, MSecCount: Word;
begin
 DivMod(DateTimeToTimeStamp(DateTime).Time, SecsPerMin * MSecsPerSec, MinCount, MSecCount);
 DivMod(MinCount, MinsPerHour, Hour, Min);
 DivMod(MSecCount, MSecsPerSec, Sec, MSec);
end;
end.


 
thaddy   (2005-04-12 19:25) [2]

and forgot:

type
 TTimeStamp = record
   Time: Integer;      
   Date: Integer;      
 end;

const
 DateDelta = 693594;


 
Владимир Кладов   (2005-04-12 19:52) [3]

var D: TDateTime; S: TSystemTime;
DateTime2SystemTime( D, S );

// S.wHour; S.wMinute; S.wSecond; ?


 
thaddy   (2005-04-12 20:50) [4]

Again, there is more in kol than we know.
Thanks Vladimir!


 
Boguslaw Brandys   (2005-04-13 13:05) [5]

DateTime2SystemTime work good but I mean DecodeTime in context of decode period between two dates !

var Start,End: TDateTime; S: TSystemTime;

End := Now - Start;
DateTime2SystemTime( End, S );

// S.wHour; S.wMinute; S.wSecond;  - bad result now :-(


 
Владимир Кладов   (2005-04-13 16:25) [6]

try this:
DateTime2SystemTime( Fraq( D1 - D2 ) + Trunc( Now ), S );


 
Boguslaw Brandys   (2005-04-13 19:04) [7]

Where is Fraq defined ?


 
Владимир Кладов   (2005-04-13 20:47) [8]

sorry, Frac (fractional part of floating point number). Should be defined in system unit.



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

Форум: "KOL";
Текущий архив: 2005.12.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.042 c
2-1132918235
Quadro
2005-11-25 14:30
2005.12.11
Странная ошибка


3-1130269286
Павел
2005-10-25 23:41
2005.12.11
shadow


6-1125377105
Laymer
2005-08-30 08:45
2005.12.11
сокет сервер


1-1131684367
Er
2005-11-11 07:46
2005.12.11
Выделение компонентов


2-1133123060
John Doe
2005-11-27 23:24
2005.12.11
Недекларированная SysMsgProc и ее параметры





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский