Библиотека обработки времени Time
Библиотека времени содержит функции и определения типов для вычислений времени в формате времени UNIX, который подсчитывает количество секунд с «эпохи». Это очень удобно для программ, которые работают с временными интервалами: разница между двумя значениями времени UNIX представляет собой разницу в реальном времени, измеренную в секундах.
Какова эпоха?
Первоначально он был определен как начало 1970 GMT. (1 января 1970 года в юлианский день) GMT, время по Гринвичу, является традиционным термином для часового пояса в Англии.
TimeStruct - тип структуры, подходящий для хранения времени и даты..
Процедуры библиотеки
Time_dateToEpoch
| Прототип |
function Time_dateToEpoch(var ts : TimeStruct) : longint; |
|---|---|
| Описание |
Эта функция возвращает время UNIX: количество секунд с 1 января 1970 года 0h00mn00s. |
| Параметры |
|
| Возвращает |
Количество секунд с 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 время и дату. |
| Параметры |
|
| Возвращает |
Ничего. |
| Требует |
Ничего. |
| Пример |
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. |
| Параметры |
|
| Возвращает |
Разница во времени в секундах как долгое знаком. |
| Требует |
Ничего. |
| Пример |
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.
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;
