GetPeriod

From SunFlurry wiki
Jump to: navigation, search
  GetPeriod (Функции работы с датами)
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Нет
Исключения:Невозможно превратить в дату, число
Визуальность:Нет

Функция получает величину времени, прошедшего с даты первого аргумента до даты второго аргумента, выраженную в указанных единицах. Функция может использоваться для определения времени, которое заняла определенная операция, либо цикл ожидания, однако, нужно понимать, что период времени вычисляется на основе системных часов, что приведет к некорректному результату функции, если системное время было изменено после получения начальной даты периода (<Дата 1>). Кроме того, данная функция обеспечивает точность не более десятков миллисекунд, так как точность системных часов компьютера обычно невелика. Чтобы получить большую точность при измерении периода и избавиться от зависимости от системных часов, можно использовать функцию dbgHRPCGetPeriod, однако, последняя подразумевает, что компьютер имеет таймер высокой точности, и оный переведен в рабочее состояние (обычно включение такого таймера происходит в BIOSе компьютера).

Синтаксис

GetPeriod(<Дата 1>,<Дата 2>,<Режим (INT)>=0):<Результат (NUMBER)>

Аргументы

  • <Дата 1> - Дата и время начала периода
  • <Дата 2> - Дата и время окончания периода (обычно текущая дата)
  • <Режим (INT)> - Единицы измерения, в которых будет получен период. Возможны следующие значения:
    • 0 (по умолчанию) -- вещественное число, целая часть которого показывает количество прошедших дней, дробная же часть отвечает за единицы измерения меньше дня. К примеру Trunc(<Результат GetPeriod>) будет отдавать число прошедших дней, Trunc(<Результат GetPeriod>*24) будет отдавать число прошедших часов и т.д.
    • 1 -- разница между двумя датами в днях (целое число)
    • 2 -- разница между двумя датами в часах (целое число)
    • 3 -- разница между двумя датами в минутах (целое число)
    • 4 -- разница между двумя датами в секундах (целое число)
    • 5 -- разница между двумя датами в миллисекундах (целое число). Нужно заметить, что максимальное разрешение системных часов обычно не превышает десятков миллисекунд.

Возвращаемое значение

Возвращает значение типа число (целое или вещественное в зависимости от режима).

Примеры

Message(GetPeriod('31.01.2012','31.01.2024',1));
//Будет выведено 4383 (прошло дней)

Дата1:=Date();
Sleep(1250);
Message(GetPeriod(Дата1,Date(),5));
//Будет выведено число около 1260 (прошло миллисекунд, число не будет равно 1250, так как остальные инструкции также занимают некоторое время)