Работа с датой и временем

Временная метка

В предыдущей статье мы рассказали, что в BotBrains все пользовательские данные хранятся в виде чисел. Этот касается и данных о дате и времени. В BotBrains дата и время хранится в виде временной метки.

Временная метка (timestamp) - это количество секунд прошедшее с 00:00:00 UTC 1 января, 1970 года.

Формат даты и времени

У некторых блоков есть параметр даты и времени. Например, в блоке "нарисовать вертикальную линию" нужно указать дату и время свечи, на которой будет нарисована вертикальная линия.

Дата и время может быть указана в следующем формате: ГГГГ-ММ-ДД [ЧЧ-ММ-СС]

Вот несколько примеров дат правильного формата:

  • 2021-09-21 13:45:15

  • 2021-05-27 14:00:00

  • 2021-01-01

  • 2021-08-08 15:12

  • 2021-05-01 12

Дата и время в прочих блоках

Если в каком-то блоке вы введете дату и время в надлежащем формате, ваш робот сможет определить дату и время и соответствующим образом приведет указанную дату и время в временную метку.

Например, посмотрите на схему ниже:

В блоке "ввод значения" дата и время указана в надлежащем формате. Если мы запустим этого робота, мы увидим, что дата и время была успешно приведена во временную метку:

Точно таким же образом можно хранить дату и время в переменных - просто используйте блок "установить вычисляемое значение переменной" вместе с блоком "ввод значения":

В результате выполнения этой схемы, в переменную запишется временная метка - то есть в переменной будет содержаться число секунд, количество секунд прошедшее с 00:00:00 UTC 1 января, 1970 года.

Если мы захотим вывести значение этой переменной и увидеть не временную метку, а отформатированную дату и время, нужно воспользоваться блоком приведения к типу "строка в формате даты и времени":

Сравнение временных меток

Временные метки можно сравнивать. Более поздняя дата будет иметь большую временную метку чем более ранняя дата.

На схеме ниже проверятся, больше ли текущая временная метка чем временная метка даты 2021-05-01:

При помощи блока "информация о времени" можно получить следующую информацию о времени:

  1. Секунд с 01.01.1970 (временная метка)

  2. Номер дня недели

  3. Порядковый номер дня в году

Если мы запустим этого робота, то, как и ожидалось, выведется сообщение "Истина", так как текущая временная метка будет всегда больше любой временной метки в прошлом.

Обратите внимание, с временными метками, как и с любыми другими числами, можно производить математические операции. Например, можно вычесть из текущей временной метки 86400 и получить временную метку, которая на 86400 секунд (24 часа) меньше текущей.

Last updated