Библиотека обработки времени Time

Библиотека времени содержит функции и определения типов для вычислений времени в формате времени UNIX, который подсчитывает количество секунд с «эпохи». Это очень удобно для программ, которые работают с временными интервалами: разница между двумя значениями времени UNIX представляет собой разницу в реальном времени, измеренную в секундах.

Какова эпоха?
Первоначально он был определен как начало 1970 GMT. (1 января 1970 года в юлианский день) GMT, время по Гринвичу, является традиционным термином для часового пояса в Англии.

TimeStruct - тип структуры, подходящий для хранения времени и даты..

Процедуры библиотеки

Time_dateToEpoch

Прототип

function Time_dateToEpoch(var ts : TimeStruct) : longint;

Описание

Эта функция возвращает время UNIX: количество секунд с 1 января 1970 года 0h00mn00s.

Параметры
  • ts:времени и даты для вычисления времени UNIX.
Возвращает

Количество секунд с 1 января 1970 года 0h00mn00s.

Требует

Ничего.

Пример
var ts1 : TimeStruct;
    Epoch : longint;
...
// what is the epoch of the date in ts ?
epoch := Time_dateToEpoch(@ts1) ;
Примечания

Нет.

Time_epochToDate

Прототип

procedure Time_epochToDate(e : longint; var ts : TimeStruct);

Описание

Преобразует UNIX время и дату.

Параметры
  • e: Время UNIX (секунды с эпохи UNIX)
  • ts: структура времени и даты для хранения результата преобразования
Возвращает

Ничего.

Требует

Ничего.

Пример
var ts2 : TimeStruct;
    epoch : longint;
...
//what date is epoch 1234567890 ?
epoch := 1234567890 ;
Time_epochToDate(epoch,ts2);
Примечания

Нет.

Time_dateDiff

Прототип

function Time_dateDiff(var t1, t2 : TimeStruct) : longint ;

Описание

Эта функция сравнивает две даты и Возвращает разницу во времени в секундах как долгое знаком. Результат положительный, если t1 до t2, результат равен нулю, если t1 совпадает с t2, и результат отрицательный, если t1 после t2.

Параметры
  • t1: структура времени и даты (первый параметр сравнения)
  • t2: структура времени и даты (второй параметр сравнения)
Возвращает

Разница во времени в секундах как долгое знаком.

Требует

Ничего.

Пример
var ts1, ts2 : TimeStruct;
    diff : longint;
...
//how many seconds between these two dates contained in ts1 and ts2 buffers?
 diff := Time_dateDiff(ts1, ts2);
Примечания

Нет.

Пример использования библиотеки

Демонстрация использования подпрограмм библиотеки времени для расчета времени в формате времени UNIX.

Copy Code To ClipboardCopy Code To Clipboard
program Time_Demo;
  {*
   * simple time structure
   *}
  type TimeStruct = record
     ss : byte ;    // seconds
     mn : byte ;    // minutes
     hh : byte ;    // hours
     md : byte ;    // day in month, from 1 to 31
     wd : byte ;    // day in week, monday=0, tuesday=1, .... sunday=6
     mo : byte ;    // month number, from 1 to 12 (and not from 0 to 11 as with unix C time !)
     yy : word ;    // year Y2K compliant, from 1892 to 2038
  end;

  var  ts1, ts2    : TimeStruct;
       buf         : array[256] of byte ;
       epoch, diff : longint ;

  begin
    ts1.ss := 0 ;
    ts1.mn := 7 ;
    ts1.hh := 17 ;
    ts1.md := 23 ;
    ts1.mo := 5 ;
    ts1.yy := 2006 ;

    {*
     * what is the epoch of the date in ts ?
     *}
    epoch := Time_dateToEpoch(@ts1) ;   // epoch = 1148404020

    {*
     * what date is epoch 1234567890 ?
     *}

    epoch := 1234567890 ;
    Time_epochToDate(epoch, @ts2) ;     // ts2.ss := 30 ;
                                       // ts2.mn := 31 ;
                                       // ts2.hh := 23 ;
                                       // ts2.md := 13 ;
                                       // ts2.wd := 4 ;
                                       // ts2.mo := 2 ;
                                       // ts2.yy := 2009 ;

    {*
     * how much seconds between this two dates ?
     *}
    diff := Time_dateDiff(@ts1, @ts2) ;  // diff = 86163870

  end.

Определение типа TimeStruct

type TimeStruct = record
     ss : byte ;    // seconds
     mn : byte ;    // minutes
     hh : byte ;    // hours
     md : byte ;    // day in month, from 1 to 31
     wd : byte ;    // day in week, monday=0, tuesday=1, .... sunday=6
     mo : byte ;    // month number, from 1 to 12 (and not from 0 to 11 as with unix C time !)
     yy : word ;    // year Y2K compliant, from 1892 to 2038
  end;