Работа с датами в Sherlock Platform

Последние изменения: 28.02.2023

При реализации логики бота иногда возникает задача обработки и вывода даты в требуемом формате. Например, форматирование даты требуется для вывода пользователю или отправки через API во внешний сервис. Такая задача возникает, так как дата может приходить от пользователя, внешнего сервиса или сохраняться в Sherlock в виде строки одного формата, а далее требуется использовать другой формат.

Для решения задачи необходимо форматировать дату, используя формулы C# и использованием команды Установка переменной контекста. Ниже приведены необходимые формулы:

  1. DateTime.Now или DateTime.UtcNow - для получения текущей даты

  2. DateTime.Parse("#DateVariable#") - используется для преобразования строки в контексте бота к дате для последующей обработки. DateTime.Parse корректно обрабатывает строку в текущей локализации (на наших серверах в формате принятом в России) или строку в универсальном формате (universal date/time)

  3. DateTime.Parse("#DateVariable#").ToString("dd.MM.yyyy HH:mm") - для преобразования строки в дату с последующим форматированием к строке требуемого формата. Полное описание формата строки для форматирования описано в статье Строки настраиваемых форматов даты и времени. Часто используемые значения:

    • dd - день

    • MM - месяц цифрами

    • yy или yyyy - год в формате 2-х или 4-х цифр

    • HH - часы

    • mm - минуты

  4. new DateTimeOffset(DateTime.Parse("#DateVariable#")).ToUnixTimeMilliseconds() или new DateTimeOffset(DateTime.Parse("#DateVariable#")).ToUnixTimeSeconds() - для преобразования к Unix формату (миллисекунд/секунд с начала отсчета от 1 января 1970 года, длинное целое число)  

Пример форматирования даты в списке с помощью формулы привезен в статье Использование формул C# при выводе списка.

Помогла ли вам статья?