decode
Сигнатура, описание и параметры
\Bitrix\Main\Text\DateConverter::decode( $text, $limit = 0 );
Статический метод распознаёт даты в тексте.
Параметры
| Параметр | Описание | С версии |
|---|---|---|
| text | Текст для распознавания. | |
| limit | Ограничение на обработку текста в символах. 0 - без ограничений. Рекомендуется использовать разумный лимит, например: распознавать дату только из первой тысячи символов. |
Фразы и модификаторы
Для построения есть 3 группы фраз и 2 группы модификаторов, на основе которых строится распознавание:
| Относительная дата | Дни недели | Точная дата | Модификаторы даты | Модификаторы времени |
|---|---|---|---|---|
| Послезавтра | Понедельник | 11.02 | После: +час | Утро - 10:00 |
| Завтра | Вторник | 11.02.2013 | Перед: -час | Обед - 14:00 |
| Сегодня | Среда | 11.02.13 - (будет 11.02.2013) | До: -час | Днем - 18:00 |
| Вчера | Четверг | Вечер - 20:00 | ||
| Позавчера | Пятница | |||
| Неделя | Суббота | |||
| Выходной | Воскресенье | |||
| Месяц |
Смешивая элементы групп и модификаторов, можно получить сложную дату, например фраза: Напомни в середине следующего месяца поставить тебе задачу вернет дату (пример для сообщения, написанного в апреле 2017-го):
2017-05-16 19:00:00
Пример
Вам нужна только дата:
$date = Bitrix\Main\Type\DateTime::createFromText('Напомни в середине следующего месяца поставить тебе задачу');
$date // Обьект DateTime
Вам нужно больше данных или все найденные даты внутри текста
$results = \Bitrix\Main\Text\DateConverter::decode('Напомни в середине следующего месяца поставить тебе задачу', 1000);
foreach ($results as $result) // Массив обьектов результатов распознования
{
$result->getDate(); // Обьект DateTime
$result->getText(); // Распознанный текст, который можете использовать для замены на действие
$result->getTextPosition(); // Начало распознанного текста
$result->getTextLength(); // Длина распознанного текста
$result->getType(); // Распознанный основной тип
$result->getMetrics(); // Основная метрика (день недели, неделя и тд)
$result->getMetricModifier(); // Модификаторы основной метрики (до, после, время)
}
© «Битрикс», 2001-2026, «1С-Битрикс», 2026