java #cron #scheduled-tasks #scheduler
#java #хрон #запланированные задачи #планировщик
Вопрос:
У меня есть приложение, в котором пользователи могут создавать повторяющиеся задачи, такие как «каждые 2 недели» или «каждый первый понедельник месяца каждого месяца».
Я попытался представить этот период и вычислить следующее время выполнения, используя формат CRON, но я искал, и они не могут быть представлены с помощью CRON без дополнительных сценариев.
Я не знаю, может быть, это потому, что я не являюсь носителем английского языка и не знаю правильных ключевых слов, но я не могу найти существующего решения для этого.
Этот «период» должен храниться в виде строки и, если возможно, иметь существующие библиотеки js и java для его создания и генерации следующего datetime.
Если ничего не существует.. что ж, я создам свое собственное решение / формат.
Спасибо
Комментарии:
1. Это может помочь: freeformatter.com/cron-expression-generator-quartz.html или вот это: cronmaker.com — выражение для первого понедельника месяца будет следующим:
0 0 0 ? * 2#1 *
Ответ №1:
Как сказал Томас, формат, используемый Quartz, допускает больше вариантов использования и работает в большинстве шахт. Спасибо
http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html
https://www.freeformatter.com/cron-expression-generator-quartz.html
Ответ №2:
Первый понедельник каждого месяца означает:
- День недели = 1
- День месяца = 1-7
Что в качестве выражения cron является:
0 0 1-7 * 1
│ │ │ │ └─ Day of week 1 (Monday)
│ │ │ └─── Every month
│ │ └────── Day of month 1-7
│ └───────── Hour 0
└─────────── Minute 0
или более читаемый:
0 0 1-7 * MON