Дата и время

Генератор cron Quartz · Проверьте даты перед настройкой

Разберите выражение Java Quartz, измените поля и посмотрите подходящие даты в выбранном часовом поясе.

Генератор cron Quartz

Выражение

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

Поля и подходящие даты

Параметры

Дата ISO с секундами. Без пояса используется выбранная зона IANA. Повторное/отсутствующее местное время требует Z или смещения. Местный год начала: 1970–2099.

Пропущенные часы не учитываются; повторные используют позднее смещение без возврата местных полей перед началом. Данные браузера/JVM и настройки триггера могут различаться.

До 512 единиц UTF-16, 1–1 000 дат, десяти местных календарных лет и не позднее 2099 года. Расчёт останавливается через пять секунд.

Конструктор полей

Правки остаются в черновике до просмотра и применения замены.

0 0 9 ? * MON-FRI

Секунда/минута 0–59; час 0–23; день 1–31; месяц 1–12; неделя 1=ВС–7=СБ; год 1970–2099 (пустое поле опускается). Ровно одно поле дня должно быть ?.

Подмножество Java Quartz 2.3.2: списки, диапазоны, числовые шаги, ?, L, L-n, LW, nW, nL и n#k. Специальные условия отдельно. Без шагов с именами, смешанных диапазонов и L-nW.

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

Генератор cron Quartz помогает проверить условия вроде последнего буднего дня месяца. Если месяц заканчивается в воскресенье, эта дата отличается от календарного конца месяца. Список совпадений позволяет увидеть разницу до настройки триггера.

Этот генератор cron-выражений объединяет черновик полей и разбор готовой строки. Формат Quartz cron требует проверки не только числа полей: важны номера дней недели и условия даты. Проверка cron может пройти успешно, хотя в заданном окне окажется меньше дат, чем запрошено.

Зачем нужен Генератор cron Quartz

Не терять смысл условий дня

Генератор cron Quartz требует ровно один ? в поле дня месяца или дня недели. При конфликте исходная строка сохраняется, а ошибка указывает поле. Программа не выбирает за вас, какое условие удалить. Изменение применяется только после просмотра черновика.

От одного ввода расходятся условия дня месяца и дня недели; выбран только один путь.

Различать конец месяца и последний будний день

L выбирает последнюю календарную дату, LW — последний понедельник–пятницу внутри месяца. Если месяц заканчивается в воскресенье, LW указывает на предшествующую пятницу. Это помогает проверить ежемесячные операции без предположения, что месяц всегда состоит из 31 дня.

На двух одинаковых календарях выделены последнее воскресенье и предыдущая пятница, а выходные столбцы затенены.

Согласуйте черновик с окном поиска

01

Сначала загрузите поля

Загрузка полей разбирает текущую строку в черновик, не заменяя ввод. Шаблоны тоже меняют только черновик. Пустой год означает шесть полей, заданный год — семь. Перед применением показаны изменения. Одна отмена восстанавливает ввод, параметры и результат вместе.

02

Задайте однозначное начало

Пример начинается 1 января 2026 года в UTC. Кнопка текущего времени готовит новое начало для подтверждения. Нужна дата ISO с секундами. Без суффикса используется выбранная зона IANA; повторяющееся или отсутствующее местное время требует Z либо явного смещения.

03

Проверьте число найденных дат

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

Условия, по которым выбираются даты

Обязательные секунды и необязательный год

Порядок полей: секунда, минута, час, день, месяц, день недели и при необходимости год. Нормализованное выражение сохраняет наличие или отсутствие года. В шестипольной записи секунды по-прежнему обязательны; это не пятичастный Linux crontab.

Относительные даты внутри месяца

L-n отсчитывает n дней назад от конца месяца. nW ищет ближайший понедельник–пятницу, не выходя за его границы. nL обозначает последний заданный день недели, n#k — его появление номер k. Поэтому FRI#3 и 6L могут указывать на разные пятницы.

Диапазоны через границу

22-2 охватывает часы вокруг полуночи, NOV-FEB — месяцы через конец года. 5/15 в минутах выбирает 5, 20, 35 и 50, затем начинает заново каждый час. Шаг действует внутри своего поля. Диапазоны лет допускаются только по возрастанию.

Ближайшие запуски с часовым поясом

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

Поддерживаемая запись и пределы расчёта

Распространённое подмножество Java Quartz 2.3.2
Одна строка из шести или семи полей, не более 512 единиц UTF-16. Это не адаптер Spring, Quartz.NET, AWS или Jenkins. Секунды и минуты: 0–59, часы: 0–23, месяцы: 1–12. Воскресенье — 1, суббота — 7. Ровно одно из двух полей дня должно быть ?.
Специальные условия задаются отдельно
Для даты доступны L, L-1…L-30, LW и 1W…31W. Для дня недели: отдельный L означает субботу, nL — последний день недели, n#1…n#5 — номер появления. Списки специальных условий, несколько # и L-nW отклоняются. Сложное расписание может потребовать нескольких триггеров.
Имена не сочетаются с шагом
JAN–DEC и SUN–SAT не зависят от регистра. Обе границы диапазона должны быть либо числами, либо именами. Шаги с именами, например JAN-MAR/2, и смешанные диапазоны не принимаются. Используйте числовой шаг или явный список, чтобы не зависеть от неожиданных особенностей Java-парсера.
Отсутствующие даты и конечный поиск
Если нет 31-го числа, 31W или пятого нужного дня недели, месяц пропускается. W означает понедельник–пятницу без учёта праздников. Год и местный год начала: 1970–2099. Поиск ограничен десятью местными календарными годами, 1 000 датами и пятью секундами вычисления.
Задания не запускаются
Несуществующее время при переводе часов пропускается. Повторяющееся время обычно получает более позднее смещение, но местные поля не возвращаются перед началом. Данные поясов браузера и JVM могут различаться. Праздничные календари, misfire, повторы, параллельность и выполнение задания не моделируются.

Вопросы про Генератор cron Quartz

Время показано по Москве?

По умолчанию используется UTC. Чтобы получить московские календарные условия, задайте Europe/Moscow. Каждая строка содержит местную дату, смещение и момент UTC, поэтому можно проверить перевод. Часовой пояс браузера автоматически не подставляется; настройка триггера на сервере должна соответствовать вашему выбору.

Как сочетаются день месяца и день недели?

В поддерживаемом Java Quartz одно поле задаёт условие, а другое должно быть ?. Для будней в девять используйте 0 0 9 ? * MON-FRI, для каждого дня в девять — 0 0 9 * * ?. Два одновременно ограниченных поля здесь недопустимы.

Поддерживаются ли Quartz и секунды?

Да, страница рассчитана на описанное подмножество Java Quartz 2.3.2. Секунды обязательны в первом поле. Год можно добавить седьмым полем либо опустить. Выражения Linux, Spring, Quartz.NET и других платформ не распознаются автоматически по числу частей.

Почему найдено меньше ожидаемого числа запусков?

В окне поиска может не хватить подходящих дат. Например, 29 февраля встречается редко, #5 пропускает месяцы с четырьмя нужными днями недели, а явный год может уже закончиться. Отчёт показывает предел поиска и фактическое количество. Это не равнозначно ошибке синтаксиса или доказательству, что запусков не будет никогда.

Как выбрать понедельник, выпавший на число от 2 до 8?

Это одновременное условие на дату и день недели, которое Java Quartz 2.3.2 не выражает одной строкой. Оно не всегда означает второй понедельник месяца. Нужна недельная частота с отдельным календарным фильтром или проверкой в приложении; такой фильтр этот инструмент не создаёт.

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

Передайте проверенную строку в триггер

Генератор cron Quartz позволяет сопоставить поля и найденные даты перед копированием в конфигурацию Java Quartz. На сервере также проверьте часовой пояс и политику обработки пропущенных запусков.

Совпадение по календарю — прогноз, а не подтверждение выполнения задания.