Системное программирование в UNIX средствами Free Pascal


         

и gmtime конвертируют значение, полученное


uses stdio;
function localtime(var _timeval:longint):ptm;
function gmtime(var _timeval:longint):ptm;
function asctime(const tptr:ptm):pchar;
function mktime(tptr:ptm):longint;
function difftime(time1, time2:longint):double;cdecl;external 'c';
Процедуры localtime и gmtime конвертируют значение, полученное в результате вызова GetTimeOfDay, в структуру tm и возвращают локальное время и стандартное гринвичское время соответственно. Например, программа
(* Программа tm - демонстрация структуры tm *)
uses linux,stdio;
var
  t:longint;
  tp:ptm;
begin
  (* Получить системное время *)
  t:=gettimeofday;
  (* Получить структуру tm *)
  tp := localtime (t);
  printf ('Время %02d:%02d:%02d'#$a, [tp^.tm_hour, tp^.tm_min,
                                      tp^.tm_sec]);
  halt (0);
end.
выводит сообщение
Время 1:13:23
Процедура asctime преобразует структуру tm в строку в формате вывода процедуры ctime, а процедура
mktime преобразует структуру tm
в соответствующее ей системное время (число секунд). Процедура difftime возвращает разность между двумя значениями времени в секундах.
Другие функции для работы со временем:


































EpochToLocal

Преобразует время от начала эпохи в локальные дату и время

GetDate

Возвращает системную дату

GetDateTime

Возвращает системные дату и время

GetEpochTime

То же, что и GetTimeOfDay, но с учетом временной зоны

GetLocalTimezone

Возвращает системную временную зону

GetTime

Возвращает системное время

GetTimezoneFile

Возвращает имя файла временной зоны

ReadTimezoneFile

Возвращает содержимое файла временной зоны

Пример использования GetEpochTime:
Uses linux;
begin
  Write ('Secs past the start of the Epoch (00:00 1/1/1970) : ');
  Writeln (GetEpochTime);
end.
Пример использования EpochToLocal:
Uses linux;
Var Year,month,day,hour,minute,seconds : Word;
begin
  EpochToLocal (GetEpochTime,Year,month,day,hour,minute,seconds);
  Writeln ('Current date : ',Day:2,'/',Month:2,'/',Year:4);
  Writeln ('Current time : ',Hour:2,':',minute:2,':',seconds:2);
end.
Упражнение 12.3. Напишите свою версию процедуры asctime.
Упражнение 12.4. Напишите функцию weekday, возвращающую 1 для рабочих дней и 0 – для выходных. Напишите обратную функцию weekend. Эти функции также должны предоставлять возможность задания выходных дней.
Упражнение 12.5. Напишите процедуры, возвращающие разность между двумя значениями, полученными при вызове gettimeofday в днях, месяцах, годах и секундах. Не забывайте про високосные годы!

Содержание  Назад  Вперед