Получение точного времени
Модератор: Модераторы
Была в fpc 1.0.х в модуле linux такая хорошая процедура -- GetTime, которая давала системное время с точностью до миллисекунд. С переходом на 2.0.х эта процедура исчезла. Я в доках копался, нашел взамен только fptime, но она секунды дает, а мне этого маловато. Кто знает, каке еще процедуры/функции для времени в *nix есть.
Причем тут юниксы, есть модуль SysUtils ...
Код: Выделить всё
Program Example17;
{ This program demonstrates the MSecsToTimeStamp function }
Uses sysutils;
Var MS : Comp;
TS : TTimeStamp;
DT : TDateTime;
Begin
TS:=DateTimeToTimeStamp(Now);
Writeln ('Now in days since 1/1/0001 : ',TS.Date);
Writeln ('Now in millisecs since midnight : ',TS.Time);
MS:=TimeStampToMSecs(TS);
Writeln ('Now in millisecs since 1/1/0001 : ',MS);
MS:=MS-1000*3600*2;
TS:=MSecsToTimeStamp(MS);
DT:=TimeStampToDateTime(TS);
Writeln ('Now minus 1 day : ',DateTimeToStr(DT));
End.STAKANOV писал(а): Причем тут юниксы, есть модуль SysUtils ...Код: Выделить всё
Program Example17;
{ This program demonstrates the MSecsToTimeStamp function }
Uses sysutils;
Var MS : Comp;
TS : TTimeStamp;
DT : TDateTime;
Begin
TS:=DateTimeToTimeStamp(Now);
Writeln ('Now in days since 1/1/0001 : ',TS.Date);
Writeln ('Now in millisecs since midnight : ',TS.Time);
MS:=TimeStampToMSecs(TS);
Writeln ('Now in millisecs since 1/1/0001 : ',MS);
MS:=MS-1000*3600*2;
TS:=MSecsToTimeStamp(MS);
DT:=TimeStampToDateTime(TS);
Writeln ('Now minus 1 day : ',DateTimeToStr(DT));
End.
Только в 2.0.0 и в 2.0.1 функция Now() почему то выдает разнае значения.
STAKANOV писал(а):Только в 2.0.0 и в 2.0.1 функция Now() почему то выдает разнае значения.
так она при каждом вызове будет выдавать разные значения, время не стоит на месте
Не совсем так.
Допустим, сейчас 19:00 EEST (часовой пояс +2)
Программа, скомпилированная на FPC 2.0.0-RELEASE, установленном из бинарников, при запуске выдает 19:00
Программа, скомпилированная на FPC 2.0.1-STABLE, собранном из исходников, при запуске выдает 17:00
Это была одна из причин, по которой я не смог нормально перейти на 6 ветку FreeBSD. Пришлось под ней запускать бинарники FPC 2.0.0 в режиме совместимости с FreeBSD 4.
-
Гость_pencil
Гость_pencil писал(а): 2 Stakanov
Спасибо большое.
2 Dmitry
А разное значение Now не может быть связано с учетом/неучетом насторек часового пояса?
Запускалось на одной и той же машине.
У меня было желание перенести FPC на FreeBSD 6-STABLE
Для запуска на ней нужно в ядре ставить опцию COMPAT_FREEBSD4.
А я хотел перекомпилировать FPC, чтобы он запускался без режима совместимости.
Итог.
FPC 2.0.0, собранный из бинарников, показывает одно время, а FPC 2.0.1, собранный из исходников, на той же машине, показывает другое время.
