При реализации логики бота иногда возникает задача обработки и вывода даты в требуемом формате. Например, форматирование даты требуется для вывода пользователю или отправки через API во внешний сервис. Такая задача возникает, так как дата может приходить от пользователя, внешнего сервиса или сохраняться в Sherlock в виде строки одного формата, а далее требуется использовать другой формат.
Для решения задачи необходимо форматировать дату, используя формулы C# и использованием команды Установка переменной контекста. Ниже приведены необходимые формулы:
DateTime.Now или DateTime.UtcNow - для получения текущей даты
DateTime.Parse("#DateVariable#") - используется для преобразования строки в контексте бота к дате для последующей обработки. DateTime.Parse корректно обрабатывает строку в текущей локализации (на наших серверах в формате принятом в России) или строку в универсальном формате (universal date/time)
DateTime.Parse("#DateVariable#").ToString("dd.MM.yyyy HH:mm") - для преобразования строки в дату с последующим форматированием к строке требуемого формата. Полное описание формата строки для форматирования описано в статье Строки настраиваемых форматов даты и времени. Часто используемые значения:
dd - день
MM - месяц цифрами
yy или yyyy - год в формате 2-х или 4-х цифр
HH - часы
mm - минуты
new DateTimeOffset(DateTime.Parse("#DateVariable#")).ToUnixTimeMilliseconds() или new DateTimeOffset(DateTime.Parse("#DateVariable#")).ToUnixTimeSeconds() - для преобразования к Unix формату (миллисекунд/секунд с начала отсчета от 1 января 1970 года, длинное целое число)
Пример форматирования даты в списке с помощью формулы привезен в статье Использование формул C# при выводе списка.