Работа со временем возможна только по часовому поясу бота, часовой пояс пользователя бот определить не может
Чтобы преобразовать текущую дату, можно воспользоваться хелпером:
{{formatDate (now) "DD.MM.YYYY" "ru"}}
Также существует хелпер для преобразования даты, введенной пользователем:
{{formatDate Date1 "DD.MM.YYYY" "ru"}}
Где Date1 — это переменная, куда записалась дата, которую прислал пользователь.
В боте это можно реализовать таким образом:
{{addDate (formatDate now "DD.MM.YYYY HH:mm:ss" "RU") 1 "days" "DD.MM.YYYY HH:mm:ss"}}
Можно поменять 1 на нужное количество дней, которые прибавляются:
{{addDate (formatDate now "DD.MM.YYYY HH:mm:ss" "RU") 15 "days" "DD.MM.YYYY HH:mm:ss"}}
Если поменять "days" на "months" — прибавятся месяцы:
{{addDate (formatDate now "DD.MM.YYYY HH:mm:ss" "RU") 1 "months" "DD.MM.YYYY HH:mm:ss"}}
"weeks" — недели:
{{addDate (formatDate now "DD.MM.YYYY HH:mm:ss" "RU") 1 "weeks" "DD.MM.YYYY HH:mm:ss"}}
"years" — года:
{{addDate (formatDate now "DD.MM.YYYY HH:mm:ss" "RU") 1 "years" "DD.MM.YYYY HH:mm:ss"}}
"quarters" — кварталы:
{{addDate (formatDate now "DD.MM.YYYY HH:mm:ss" "RU") 1 "quarters" "DD.MM.YYYY HH:mm:ss"}}
"hours" — часы:
{{addDate (formatDate now "DD.MM.YYYY HH:mm:ss" "RU") 2 "hours" "DD.MM.YYYY HH:mm:ss"}}
"minutes" — минуты:
{{addDate (formatDate now "DD.MM.YYYY HH:mm:ss" "RU") 2 "minutes" "DD.MM.YYYY HH:mm:ss"}}
"seconds" — секунды:
{{addDate (formatDate now "DD.MM.YYYY HH:mm:ss" "RU") 2 "seconds" "DD.MM.YYYY HH:mm:ss"}}
Эти и другие варианты можно протестировать в песочнице:
Обычно месяц в дате выводится в формате числа, но если нужно название месяца, можно использовать хелпер:
{{formatDate (now) "MMM" "ru"}}
Таким образом месяц выведется с большой буквы:
{{capitalize (formatDate (now) "MMM" "ru")}}
День недели в виде порядкового номера можно вывести с помощью хелпера:
{{formatDate now "d" "ru"}}
В этом формате дни будут считаться от 0 до 6, где 0 — это воскресенье, 1 — понедельник и т.д.
Выводить дни недели в формате «пн», «вт» и т.д. поможет хелпер:
{{formatDate now "dd" "ru"}}
Так можно выводить дни недели полностью («понедельник», «вторник», и т. д.):
{{formatDate now "dddd" "ru"}}
Если хелпере заменить "ru" на "en", то названия дней недели будут выводиться на английском:
{{formatDate now "dddd" "en"}}
Дата будет преобразовываться в зависимости от того, в какой день недели зашел пользователь.
Информацию по другим видам форматирования даты можно взять отсюда
Текущую дату и время мы можем получать с помощью хелпера:
{{formatDate (now) "DD.MM.YYYY HH:mm" "ru"}}
Записываем компонентом Запись переменной значение в переменную Time. Поскольку нас интересует только время, в которое пришел пользователь в бота, то нужно удалить из хелпера дату и оставить только часы и минуты:
{{formatDate (now) "HH:mm" "ru"}}
Ставим на экран компонент Развилка. В поле Имя переменной, откуда развилка возьмёт значение указываем Time.
Регулярное выражение проще составить для первого интервала — с 10 до 19:
^1[0-8]\:[0-5][0-9]$
Добавляем это регулярное выражение в значение цели Развилки. Выбираем Регулярное выражение в Типе данных. Цель по умолчанию — перевод в интервал с 19 до 10.
Оформляем экраны с ответами бота. Готово.
{{formatDate now 'w' 'ru'}}
Сделаем так, чтобы пользователю написавшему менее чем через 15 дней после покупки пришло сообщение с одним текстом, а тому, кто написал позже 15-дневного срока — с другим.
Это может быть полезно, если скидка на товар действует только 15 дней после покупки или для других подобных случаев.
1. Спросим у пользователя, когда он совершил последнюю покупку.
2. Запишем ответ в переменную Usday с помощью Ввода от пользователя. Выберем тип данных Дата.
3. Переведем сегодняшнюю дату в секунды с помощью хелпера
{{now}}
4. Переведем в миллисекунды дату, в которую была совершена последняя покупка, используя другой хелпер:
{{formatDate Usday 'x' 'ru'}}
Таким образом перезапишем переменную Usday.
5. Вычтем из сегодняшнего дня дату, в которую была сделана последняя покупка:
{{subtract today Usday}}
Запишем результат вычитания в переменную diff
6. С помощью хелпера для сравнения gt определим прошло больше 15 дней или меньше:
{{#gt (toInt diff) 1296000000}}Больше 15 дней{{else}}Меньше 15 дней{{/gt}}
7. Проверим переменную days развилкой и направим пользователей на разные экраны в зависимости от того, сколько прошло времени.
8. Оформим отдельные экраны для тех кто написал позже чем через 15 дней и тем кто раньше.