CronExpressions - есть ли какие-либо библиотеки для их генерации / преобразования в удобочитаемую форму? - PullRequest
21 голосов
/ 23 июня 2011

Я использую Quartz.NET, и мой планировщик в значительной степени полагается на использование выражений cron - таких, которые подробно описаны по этой ссылке:

http://quartznet.sourceforge.net/tutorial/lesson_6.html

В идеале, я 'Мне бы хотелось, чтобы 2 сценария стали возможными (1-й, вероятно, гораздо сложнее, и вряд ли что-то ему пригодится)

1: Возможность для пользователя создать выражение cron на ASP.NET форма, где они выбирают, какие минуты, часы, дни и т. Д.

2: возможность превращать выражение cron в короткую строку, например, «Каждые {x} минуты в пятницу» или «At {x}».o часы в последний день каждого месяца '

Я начал писать свои собственные версии этих, но это очень тяжелая задача, и я хотел бы узнать, есть ли там библиотека, или дажеУ вас есть какие-либо советы и подсказки по этому вопросу, ребята.

Примечание. Если для этого ничего не существует, и я (относительно) успешно создаю код, я с удовольствием поделюсь источником, если кто-то захочет его.

Ответы [ 5 ]

31 голосов
/ 22 февраля 2012

Я написал библиотеку C #, которая делает именно это. Это называется cron-expression-descriptor. https://github.com/bradymholt/cron-expression-descriptor.

11 голосов
/ 14 июля 2012

Используя самую последнюю версию Quartz.NET (2.1 на момент написания этой статьи), вы можете получить выражение Cron с помощью CronScheduleBuilder.

Получение выражения для ежедневных заданий:

var t = CronScheduleBuilder.DailyAtHourAndMinute(10, 0).Build() as CronTriggerImpl;
Console.WriteLine(t.CronExpressionString);// This is the actual Cron
Console.WriteLine(t.GetExpressionSummary()); // This is the description of that Cron
4 голосов
/ 08 февраля 2013

Я закончил тем, что использовал этот плагин jquery, который обеспечивает хороший интерфейс, а затем использовал скрытое поле, чтобы сохранить его в базе данных в .net / c #.

http://shawnchin.github.com/jquery-cron/

Это работает довольно хорошо для меня. Возможно, вам придется проверить, что вы устанавливаете секунды в начале строки на «0», хотя, если используете quartz.net, хотя, как и я, этот плагин не поддерживает секунды.

3 голосов
/ 23 июня 2011

Я использовал NCrontab некоторое время назад http://www.raboof.com/Projects/NCrontab/

Но, похоже, это не переводит его в удобочитаемый для человека ...

1 голос
/ 23 июня 2011

Кто-то задавал такой же вопрос несколько месяцев назад.
Мне никогда не удавалось найти что-то подобное.
Я закончил тем, что создал свой собственный "конфигуратор", но мои требования были вполнепростой.

...