QNext. Макрос date

QNext. Макрос date


!{date} - макрос позволяющий вставить в текст дату.

Пример:

!{date|
 when: now;
 format: dd.mm HH:MM:ss
}

Результат: 14.02 01:31:30


Макрос может принимать следующие параметры:

when

Парам when указывает какую дату отобразить: сейчас, завтра, определенная дата... В зависимости от значения when, макрос может принимать различные дополнительные параметры. Значения параметры when могут быть следующими:

when: now

Текущая дата, значение по умолчанию, можно не писать:

!{date| when: now;}

when: tomorrow

Завтра от текущей даты в это же время, т.е. по сути +24ч:

!{date| when: tomorrow;}

when: yesterday

Вчера от текущей даты в это же время (-24ч):

!{date| when: yesterday;}

when: nextWeekday

Ближайший выходной:

!{date| when: nextWeekday;}

when: value

Взятие даты из переменной триггера. Например такой макрос покажет дату когда юзер проголосовал:

!{date| 
  when: value;
  path: vote.value.createdAt;
}

В переменной path вы можете указать путь до переменной, где лежит дата. В этой переменной дата может быть в числовом формате (unixtimestamp в секундах) или сразу объект Date (javascript).


shift

С помощью параметр shift можно задать любое смещение от выбранной даты. Например выбираете текущую дату указав when: now, а затем указываете смещение от этой даты. Следущий макрос покажет текущую дату +1 день, 3 часа и 20 минут:

!{date| 
  when: now;
  shift: +1d +3h +20m;
}

Доступны следующие форматы смещения:

  • y - год
  • mm - месяц
  • d - день
  • h - час
  • m - минута
  • s - секунда

Здесь важно перед числом указать как именно будем смещаться:

  • +(плюс) означает смещение в будущее на указанное значение
  • - (минус) означает смещение в прошлое на указанное значение
  • = (равно) - в этом случае не будет смещения, а произойдет замена значения на указанное. Например если вы хотите указать завтрашний день, но определенное время, допустим 10 утра, тогда можно написать так:
!{date| 
  when: tomorrow;
  shift: =10h =0m =0s;
}


format

Параметр формат служит для форматирования вывода даты, например если вы хотите показать полную дату ГГГГ.ММ.ДД без времени:

!{date| 
  format: yyyy.mm.dd;
}

А если надо показать только время:

!{date| 
  format: hh:MM:ss;
}

Как видите в строке форматирования мы указываем спец символы, которые потом заменяются получившимися значениями. Можно использовать следующие спец символы:

  • d - дата(день)
  • dd - день с добавление нуля в начало если меньше 10
  • ddd - день недели на английском, сокращенно
  • dddd - день недели на английском, полностью
  • m - номер месяца
  • mm - номер месяца с добавлением нуля в начало
  • mmm - название месяца на английском, сокращенно
  • mmmm - название месяца на английском, полностью
  • yy - год сокращенно
  • yyyy - год полностью
  • h - часы в 12-часовом формате
  • hh - часы в 12-часовом формате, с добавлением нуля в начало
  • H - часы в 24-часовом формате
  • HH - часы в 24часовом формате, с добавлением нуля в начало
  • M - минуты
  • MM - минуты, с добавлением нуля в начало
  • s - секунды
  • ss - секунды, с добавлением нуля в начало
  • l - миллисекунды
  • Z - временная зона
  • W - номер недели
  • N - номер дня недели

Вы можете между этими спец символами писать любой текст, например так:

!{date| 
  format: hhч. MMмин. ssсек.;
}

На выходе вы получите что то вроде этого: 07ч. 20мин. 45сек.

ISO-8601

Для получения даты и времени в формате ISO-8601 и у параметра format есть специальные коды. Например чтобы отобразить дату и время в формате ISO, можно написать так:

!{date| 
  format: isoDateTime;
}

На выходе получите строку вида: 2021-02-28T17:46:21+0700.

Список всех заготовок для работы с ISO:

  • isoDate - дата в формате ISO-8601
  • isoTime - время в формате ISO-8601
  • isoDateTime - дата + время в формате ISO-8601

utc

По умолчанию макрос показывает дату во временной зоне бота, если вы хотите показать время в UTC, воспользуйтесь параметром utc:

Пример:

!{date|
 when: now;
 utc;
}


differenceWith

До сих пор мы рассматривали примеры отображения даты, а если же вам необходимо показать разницу между двумя датами, например сколько осталось дней или часов, вы можете воспользоваться параметром differenceWith. В этом параметры вы должны указать путь до даты, с которой вы хотите сравнить разницу.

Например у вас есть где нибудь дата наступления события, чтобы узнать сколько времени осталось до этой даты, можно воспользоваться таким макросом:

!{date|
  when: now;
  differenceWith: Путь.ДоПеременной.Даты;
  view: totalHours;
}

view

Параметр view может принимать следующие значения:

  • totalSeconds
  • totalMinutes
  • totalHours
  • totalDays
  • total

Значения totalSeconds, totalMinutes, totalHours и totalDays показывают разницу в секундах, минутах, часах и днях соответственно.

Значение total - покажет разницу в формате ЧЧ:ММ, если вы хотите изменить шаблон вывода, воспользуйтесь уже знакомым параметром differenceFormat:

differenceFormat

!{date|
 when: now;
 differenceWith: Путь.ДоПеременной.Даты;
 view: total;
 differenceFormat: ddд. hhч. mmмин.
}

Параметр differenceFormat может содержать следующие спец символы:

  • d - дата(день)
  • dd - день с добавление нуля в начало если меньше 10
  • h - часы
  • hh - часы, с добавлением нуля в начало
  • M - минуты
  • MM - минуты, с добавлением нуля в начало
  • s - секунды
  • ss - секунды, с добавлением нуля в начало

withSign

По умолчанию макрос date с параметром differenceWith показывает всегда положительное значение. Если вы хотите получить и знак числа, тогда воспользуйтесь параметром withSign:

!{date|
  when: now;
  differenceWith: Путь.ДоПеременной.Даты;
  view: totalHours;
  withSign;
}

В этом случае если проверяемая дата меньше текущей, тогда результат будет отображен со знаком минус.


⬅️QNext. Макросы

Report Page