Дата и время

Конструктор RRULE · Проверьте даты за строкой правила

Задайте повторение или разберите готовую строку с началом, часовым поясом и списком дат.

Конструктор RRULE

Условия повторения

BYDAY: MO,WE или 2TU,-1FR; порядковые номера только для месяцев и лет. BYMONTHDAY: −31…−1, 1…31; BYMONTH: 1…12; BYSETPOS: −366…−1, 1…366 с другим фильтром BY. Списки разделяются запятыми, пустые фильтры пропускаются.

Правило и предварительные даты

Данные обрабатываются в этом браузере и не отправляются на сервер.

Параметры

Начало: местная дата ISO с секундами, например 2026-09-14T09:00:00. UNTIL: время UTC с Z. Сам DTSTART должен соответствовать правилу.

Для пропущенного времени берётся смещение до перевода часов, а показывается сдвинутое время. Для двойного времени выбирается первое вхождение. Несуществующие даты пропускаются.

Только дни, недели, месяцы и годы. 8 192 единицы UTF-16, 100 исключений, COUNT до 10 000. Просмотр: 1–1 000 дат, десять лет от DTSTART, не позднее 2099 года; лимит пять секунд.

Ввод или параметры изменились. Перед экспортом обновите результаты.

Конструктор RRULE помогает проверить встречи раз в две недели, ежемесячное закрытие периода и отдельные отмены. Для повторяющихся событий недостаточно правильной строки: первая дата тоже должна соответствовать условиям. Иначе значение всей серии неоднозначно.

Правило повторения разворачивается от DTSTART, а не от сегодняшнего дня. Форма и текст анализа сохраняются раздельно. Списки дат показывают выбранный часовой пояс, чтобы переход часов или короткий месяц не остался незамеченным.

Зачем нужен Конструктор RRULE

31-е число и конец месяца различаются

Конструктор RRULE сохраняет смысл каждого варианта. BYMONTHDAY=31 пропускает короткие месяцы, а BYMONTHDAY=-1 выбирает последний существующий день каждого месяца. По февралю легко увидеть, задано ли закрытие месяца или только фиксированное число.

Два ряда календарей: фиксированное 31-е пропускает короткий месяц, правило конца месяца сохраняет его последний день.

Исключение не продлевает серию

Сначала COUNT ограничивает исходные повторения, затем EXDATE удаляет совпавшие моменты. Из пяти событий после одного исключения остаётся четыре. Отчёт показывает число удалений и не добавляет замену в конце.

Одна из пяти отметок перечёркнута; четыре остаются без дополнительной отметки.

Согласуйте начало, условия и окончание

01

Начните с подходящей первой даты

Примеры содержат правило и соответствующий ему DTSTART. Заменив понедельник на второй вторник месяца, измените и начало. Пример и очистка сначала показывают изменения; после применения можно один раз вернуть ввод и результат вместе.

02

Отделите местное время от окончания UTC

Начало и исключения формы задаются местной датой ISO с секундами в выбранном поясе IANA. UNTIL требует UTC с Z. Явный DTSTART в тексте имеет приоритет; запасные поля отключаются, а действующий контекст виден в результате.

03

Перед сохранением прочитайте причину остановки

Автоматический расчёт ждёт 350 мс. После его отключения доступны кнопка и Ctrl/Cmd+Enter. Изменения блокируют устаревший экспорт. Даты показываются по 50, а отчёт и JSON содержат весь рассчитанный фрагмент серии.

Как выбираются даты

Интервалы с границей недели

INTERVAL задаёт шаг в днях, неделях, месяцах или годах. BYDAY принимает дни недели и порядковые номера для месяцев и лет. WKST определяет начало недели и может менять даты при повторении через неделю.

Позиция среди подходящих дней

BYMONTH выбирает месяцы, BYMONTHDAY считает от начала или конца месяца. BYSETPOS выбирает позиции кандидатов внутри периода. Понедельник–пятница вместе с -1 дают последний из этих дней, без учёта праздничного календаря.

Контекст сохраняется во фрагменте

Правило без DTSTART использует поля начала и пояса. Явным датам нужны Z или TZID. Нормализованный фрагмент содержит действительное начало, чтобы при копировании условия не потеряли точку отсчёта.

Местное время рядом с UTC

У каждой даты есть местное время, смещение и UTC. Если переход часов сдвинул время, показывается и исходный запрос. Обычная еженедельная встреча сохраняет местный час, хотя соответствующий момент UTC может измениться.

Поддерживаемые формы и границы расчёта

Только свойства повторения
Принимаются DTSTART, одна RRULE и до 100 EXDATE. VEVENT, VCALENDAR, RDATE, EXRULE, расширения, целодневный DATE и явные плавающие даты отклоняются. TXT — фрагмент, а не готовое событие ICS для импорта.
Четыре частоты и определённые фильтры
Секундные, минутные и часовые частоты, а также BYHOUR, BYMINUTE, BYSECOND, BYYEARDAY и BYWEEKNO не поддерживаются. Время суток берётся из DTSTART. Неизвестные свойства вызывают ошибку, а не удаляются без предупреждения.
Согласованное начало и одно окончание
DTSTART должен отвечать правилу. COUNT допускает 1–10 000 и несовместим с UNTIL. Последний задаётся в UTC не раньше начала и включает событие, которое приходится точно на конечный момент.
Несуществующие даты и пропущенные часы
Несуществующие даты пропускаются без расходования COUNT. Для временных пробелов применяется подтверждённая поправка 4271 к RFC 5545: смещение до перехода и показ сдвинутого времени. Двойные часы означают первое вхождение. Данные пояса зависят от браузера.
Исключения точных моментов
EXDATE может удалить сам DTSTART, но не исключает весь день и не восполняет число событий. Повторные исключения нормализуются. Перенос из-за праздника и назначение замены отменённой встрече не выполняются.
Ограниченный просмотр
Вход ограничен 8 192 единицами UTF-16. Можно запросить 1–1 000 дат не дальше десяти лет от DTSTART, в пределах 1970–2099 годов. Расчёт останавливается через пять секунд. Лимит числа, окончание серии и граница поиска различаются.

Конструктор RRULE: частые вопросы

Как исключить отдельную дату?

EXDATE задаётся отдельным свойством, вне RRULE. В форме укажите полное местное время на каждой строке; в режиме анализа добавьте Z или TZID. Выходной фрагмент переводит исключения в моменты UTC.

Как перевод часов влияет на повторения?

Каждая местная дата интерпретируется в выбранном поясе IANA. Местный час обычной встречи сохраняется, а UTC может измениться. Пропущенное время использует прежнее смещение, двойное — первое вхождение.

Можно повторять 31-го или в ближайший день?

BYMONTHDAY=31 пропускает короткие месяцы. Для последнего дня каждого месяца используйте BYMONTHDAY=-1. Автоматический перенос на ближайшую дату изменил бы смысл, поэтому инструмент его не выполняет.

Вернётся ли дата, если UNTIL раньше DTSTART?

Инструмент выдаст ошибку. Начало не добавляется принудительно за пределами окончания. Проверяйте точные моменты UTC, поскольку строки дат в разных поясах могут выглядеть обманчиво.

Получается ли полный VEVENT?

Нет, вывод содержит только свойства повторения. UID, DTSTAMP, название и другие данные добавляет принимающее приложение. Полный файл ICS здесь не формируется и не проверяется.

Неожиданная дата запуска?

Проверьте следующую серию

Конструктор RRULE объединяет начало, исключения и рассчитанные моменты. Проверьте местное время и UTC перед переносом фрагмента в календарную систему.