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

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

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

Ответить
pencil
незнакомец
Сообщения: 6
Зарегистрирован: 29.11.2005 16:37:44

Сообщение pencil »

Была в fpc 1.0.х в модуле linux такая хорошая процедура -- GetTime, которая давала системное время с точностью до миллисекунд. С переходом на 2.0.х эта процедура исчезла. Я в доках копался, нашел взамен только fptime, но она секунды дает, а мне этого маловато. Кто знает, каке еще процедуры/функции для времени в *nix есть.
Аватара пользователя
STAKANOV
энтузиаст
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

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

Сообщение Dmitry »

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

Сообщение STAKANOV »

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

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

Сообщение Dmitry »

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.
Аватара пользователя
STAKANOV
энтузиаст
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение STAKANOV »

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

это надо в баг-репорт, я всегда говорил - стоит пользоваться только релизами ;)
Гость_pencil

Сообщение Гость_pencil »

2 Stakanov
Спасибо большое.
2 Dmitry
А разное значение Now не может быть связано с учетом/неучетом насторек часового пояса?
Dmitry
новенький
Сообщения: 52
Зарегистрирован: 05.07.2005 08:53:06

Сообщение Dmitry »

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

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

Итог.
FPC 2.0.0, собранный из бинарников, показывает одно время, а FPC 2.0.1, собранный из исходников, на той же машине, показывает другое время.
Ответить