Получение точного времени

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Сообщение pencil » 29.11.2005 17:49:48

Была в fpc 1.0.х в модуле linux такая хорошая процедура -- GetTime, которая давала системное время с точностью до миллисекунд. С переходом на 2.0.х эта процедура исчезла. Я в доках копался, нашел взамен только fptime, но она секунды дает, а мне этого маловато. Кто знает, каке еще процедуры/функции для времени в *nix есть.
pencil
незнакомец
 
Сообщения: 6
Зарегистрирован: 29.11.2005 17:37:44

Сообщение STAKANOV » 29.11.2005 19:15:28

Причем тут юниксы, есть модуль 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
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение Dmitry » 29.11.2005 19:29:07

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() почему то выдает разнае значения.
Dmitry
новенький
 
Сообщения: 52
Зарегистрирован: 05.07.2005 08:53:06

Сообщение STAKANOV » 29.11.2005 20:30:17

Только в 2.0.0 и в 2.0.1 функция Now() почему то выдает разнае значения.

так она при каждом вызове будет выдавать разные значения, время не стоит на месте
Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение Dmitry » 29.11.2005 21:02:28

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.
Dmitry
новенький
 
Сообщения: 52
Зарегистрирован: 05.07.2005 08:53:06

Сообщение STAKANOV » 29.11.2005 22:13:53

Программа, скомпилированная на FPC 2.0.0-RELEASE, установленном из бинарников, при запуске выдает 19:00
Программа, скомпилированная на FPC 2.0.1-STABLE, собранном из исходников, при запуске выдает 17:00

это надо в баг-репорт, я всегда говорил - стоит пользоваться только релизами ;)
Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение Гость_pencil » 02.12.2005 01:26:17

2 Stakanov
Спасибо большое.
2 Dmitry
А разное значение Now не может быть связано с учетом/неучетом насторек часового пояса?
Гость_pencil
 

Сообщение Dmitry » 02.12.2005 12:50:08

Гость_pencil писал(а): 2 Stakanov
Спасибо большое.
2 Dmitry
А разное значение Now не может быть связано с учетом/неучетом насторек часового пояса?

Запускалось на одной и той же машине.
У меня было желание перенести FPC на FreeBSD 6-STABLE
Для запуска на ней нужно в ядре ставить опцию COMPAT_FREEBSD4.
А я хотел перекомпилировать FPC, чтобы он запускался без режима совместимости.

Итог.
FPC 2.0.0, собранный из бинарников, показывает одно время, а FPC 2.0.1, собранный из исходников, на той же машине, показывает другое время.
Dmitry
новенький
 
Сообщения: 52
Зарегистрирован: 05.07.2005 08:53:06


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 23

Рейтинг@Mail.ru