Cron-выражение формата Quartz

Cron-выражение формата Quartz относится к формату временных интервалов, которые используются в системе планирования задач Quartz. Этот формат представляет собой строку, содержащую шесть или семь полей, разделенных пробелами или табуляцией. В каждом поле задано значение времени или даты, когда задача должна быть выполнена. Поля могут содержать любые разрешенные значения, а также различные комбинации разрешенных специальных символов для этого поля.

Описание полей:

Поле Обязательность заполнения Допустимые значения Допустимые специальные символы

Секунды

Да

0-59

, - * /

Минуты

Да

0-59

, - * /

Часы

Да

0-23

, - * /

День месяца

Да

1-31

, - * ? / L W

Месяц

Да

1-12 или JAN-DEC, где:

  • (1) JAN — январь;

  • (2) FEB — февраль;

  • (3) MAR — март;

  • (4) APR — апрель;

  • (5) MAY — май;

  • (6) JUN — июнь;

  • (7) JUL — июль;

  • (8) AUG — август;

  • (9) SEP — сентябрь;

  • (10) OCT — октябрь;

  • (11) NOV — ноябрь;

  • (12) DEC — декабрь

, - * /

День недели

Да

1-7 или SUN-SAT, где:

  • (1) SUN — воскресенье;

  • (2) MON — понедельник;

  • (3) TUE — вторник;

  • (4) WED — среда;

  • (5) THU — четверг;

  • (6) FRI — пятница;

  • (7) SAT — суббота

, - * ? / L #

Год

Нет

1970-2099

, - * /

Описание специальных символов:

Значение Расшифровка Описание

*

Все значения

Используется для выбора всех значений в поле. Например, если в поле Минуты указано значение *, — это будет означать, что задание должно выполняться каждую минуту

?

Нет специального значения

Используется, когда не важно, какой это должен быть день месяца или день недели. Например, если в поле День месяца указано значение 10, а в поле День недели — ?, — это будет означать, что задание должно выполняться 10-го числа месяца, независимо от того, какой это будет день недели

-

Используются для указания диапазона. Например, если в поле Часы указано значение 10-12, — это будет означать, что задание будет выполняться в 10:00, 11:00 и 12:00 часов

,

Используется для поочередного указания значений. Например, если в поле День недели указано значение MON,WED,FRI, — это будет означать, что задание будет выполняться в понедельник, среду и пятницу

/

Используется для указания приращения. Например, если в поле Секунды указано значение 0/15, — это будет означать, что задание будет выполняться в 0, 15, 30 и 45 секунд; а если указано значение 5/15 — в 5,20,35 и 50 секунд

L

От англ. — last (последний)

Используется для указания значений:

  • в поле День месяца — последнего дня месяца; например, для января — это будет 31 января, а для февраля — 28 февраля в не високосный год;

  • в поле День недели — субботы; однако если значение L используется после другого значения, оно будет означать последние n-дней месяца, например, значение 6L будет означать последнюю пятницу месяца.

Также может использоваться для указания смещения от последнего дня месяца, например, L-3 будет означать третий день до конца месяца.

При использовании символа L важно не указывать списки или диапазоны значений, это может привести к некорректным данным

W

От англ. — weekday (рабочий день)

Используется для указания ближайшего рабочего дня недели (понедельник-пятница) к указанному дню. Например, если в поле День месяца указано значение 15W, — это будет означать, что задание будет выполняться в ближайший рабочий день к 15-му числу месяца. Если 15-е число выпадает на субботу, задание будет запущено в пятницу 14-го числа, а если 15-е число выпадает на воскресенье, то в понедельник 16-го числа. Если 15-е число выпадает на вторник, то задание будет запущено во вторник 15-го числа. Однако, если указано значение 1W для дня месяца, и 1-е число выпадает на субботу, то задание будет запущено в понедельник 3-го числа, так как оно не может пересекать границы дней месяца.

Можно объединить символ W с символом L (LW), чтобы задать значение, которое будет означать последний будний день месяца.

При использовании символа W важно не указывать списки или диапазоны значений, это может привести к некорректным данным

#

Используется для указания n-ного дня месяца. Например, если в поле День недели указано значение 6#3, — это будет означать, что задание будет выполняться в третью пятницу месяца.

Если указано значение #5, а в месяце нет пяти заданных дней недели, то в этом месяце задание выполнено не будет

Примеры выражений:

  • * * * ? * * — задача выполнятся каждую секунду;

  • 0 * * ? * * — задача выполнятся каждую минуту;

  • 0 */2 * ? * * — задача выполнятся каждую четную минуту;

  • 0 0 12 ? * 5#3 — задача выполнятся каждый месяц в третий четверг месяца с 00:00 до 12:00.

Больше примеров вы можете найти, перейдя по ссылке.