Периодически поступают вопросы о том, как можно получить текущую дату или время из скрипта в Adrenaline боте.
Стандартный модуль SysUtlis, доступный в боте, содержит в себе все необходимое, в частности доступен тип данных TDateTime.
Сразу отмечу, что модуль DateUtils в боте не доступен, поэтому в при выполнении некоторых операций придется немного изворачиваться.
Разберем основные операции.
 
1. Получение текущих даты\времени:    
В скрипт движке бота доступны стандартные функции языка Date, Time, Now, возвращающие соответствующие значения типа даты\времени.  
                            
2. Конвертировать дату\время в строку и обратно:
Для конвертации даты\времени в строку есть методы: DateTimeToStr, DateToStr, TimeToStr, FormatDateTime (читайте внимательно описание этой функции, там есть описание доступных форматов вывода)
Для конвертации строки в дату\время пристуствуют: StrToDateTime, StrToDate, StrToTime.

Важный момент: формат даты\времени может отличаться в зависимости от локали пользователя, т.е. в России это dd.mm.yyyy, а у многих зарубежных стран dd/mm/yyyy.

Рассмотрим несколько примеров:

uses SysUtils;

begin
  Print(DateToStr(Date));       // распечатает текущую дату (01.10.2018)
  Print(TimeToStr(Time));       // распечатает текущее время (0:49:44)
  Print(DateTimeToStr(Now));    // распечатает текущие дату и время (01.10.2018 0:49:44)
  Print(FormatDateTime('hh:nn:ss.zzz', Time));   // распечатает текущее время в формате: 00:49:44.579
  Print(FormatDateTime('dd mmmm yyyy hh:nn:ss.zzz', Now));   // распечатает текущее время в формате: 01 Октябрь 2018 00:49:44.579   
  Print(StrToDateTime('01.10.2018 2:07:31'));
  Print(DateTimeToStr(StrToDateTime('00:49:44')));   // приводим строку к типу TDateTime, а потом обратно к строке, и распечатываем   
end.

3. Типовые операции с датой\временем:

Переменные типа TDateTime можно сравнивать друг с другом а так же складывать\вычитать:

uses SysUtils;

var
  past, future, delta: TDateTime;

begin
  past:= Now;                   // запоминаем время 1ый раз
  Delay(1000);                  // ждем 1 секунду
  future:= Now;                 // запоминаем время 2ой раз

  // теперь у нас есть 2 переменные, с разницой в 1 секунду, и мы можем делать с ними что-нибудь
  
  if (future > past) then ...   // сравниваем их значения (в данном случае условие вернет true)

  delta:= future - past;        // запоминаем разницу между двумя моментами времени
  Print(TimeToStr(delta));      // печатаем эту разницу (0:00:01)

end.


Как это все можно применять на практике?

Представим, что между двумя какими-то ключевыми действиями должно пройти минимум 10 минут. А еще между этими действиями мы должны пробежать из точки А в точку Б, причем время, потраченное на маршрут - заранее точно не известно (около 3-7 минут). Мы хотим сделать умную проверку, чтобы наш бот не пытался делать второе действие, пока не пройдет 10 минут с моментами совершения 1го.

uses SysUtils;

var
  Timer: TDateTime;

begin
  // совершаем 1ое действие
  Timer:= Now + StrToDateTime('00:10:00');   // прибавляем к текущему времени 10 минут и запоминаем этот момент времени
  // Engine.MoveTo(...);
  // Engine.MoveTo(...);
  // Engine.MoveTo(...);
  while (Now < Timer) do Delay(500);         // ждем пока не пройдет 10 минут с момента совершения 1го действия
  // совершаем 2ое действие

end.

Примитивный пример ограничения работы скрипта по времени. Данная проверка очень не надежна, т.к. проверяет время ПК пользователя, а он может его менять. Если Вы занимаетесь разработкой скриптов, и хотите внедрить систему лицензирования по ключам, Вам сюда: Verify.su (скриптерам под Adrenaline доступны существенные скидки).

uses SysUtils;

begin
  if (Now > StrToDateTime('30.09.2018')) then begin
    Print('Время работы скрипта истекло!');
    Script.Stop;
  end;
  // code ...
  
end.

Кроме того, в движке бота доступна функция function GetTickCount: Cardinal; - возвращает кол-во милисекунд, прошедшее с моментами запуска системы.
Ее так же можно использовать в качестве таймеров или, например, чтобы засечь время выполнения какого-то участка кода.

uses SysUtils;

var
  T: Cardinal;

begin
  T:= GetTickCount();         // запоминаем момент времени
  // code ...
  Print(GetTickCount() - T);  // печатаем кол-во затраченных мс на выполнение участка кода

  
  T:= GetTickCount();         // запоминаем момент времени
  while (GetTickCount() < T+10*60*1000) do Delay(500);   // ждем пока не пройдет 10 минут

end.