Ответ 1
Я написал библиотеку С#, которая делает именно это. Это называется cron-expression-descriptor. https://github.com/bradymholt/cron-expression-descriptor.
Я использую Quartz.NET, и мой планировщик в значительной степени полагается на использование выражения cron - например, те, которые подробно описаны в этой ссылке:
http://quartznet.sourceforge.net/tutorial/lesson_6.html
В идеале я хотел бы, чтобы 2 сценария стали возможными (1-й, вероятно, очень сложный и с меньшей вероятностью будет что-то там для него)
1: Возможность для пользователя создавать выражение cron в форме ASP.NET, где они выбирают минуты, часы, дни и т.д.
2: Возможность превратить выражение cron в короткую строку, такую как "Every {x} minutes в пятницу" или "At {x} o clock в последний день каждого месяца"
Я начал писать свои собственные версии, но это очень сложная задача, и мне бы хотелось узнать там библиотеку или даже дать вам какие-то подсказки и советы.
Примечание. Если для этого нет ничего, и я (относительно) успешно создал код, я с удовольствием поделился бы источником, если кто захочет его.
Я написал библиотеку С#, которая делает именно это. Это называется cron-expression-descriptor. https://github.com/bradymholt/cron-expression-descriptor.
Используя последнюю версию 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
Я закончил использование этого jquery-плагина, который обеспечивает приятный интерфейс, а затем с помощью скрытого поля, чтобы сохранить его в базе данных в .net/С#.
http://shawnchin.github.com/jquery-cron/
Это хорошо работает для меня. Возможно, вам нужно будет проверить, что вы устанавливаете секунды в начале строки на "0", хотя, если использовать quartz.net, хотя, как и я, этот плагин не поддерживает секунды.
Я использовал NCrontab некоторое время назад http://www.raboof.com/Projects/NCrontab/
Но, похоже, он не переводит его в Human Readable...
Кто-то спросил вопрос тот же несколько месяцев назад.
Я никогда не мог найти что-то подобное.
Я закончил свой собственный "конфигуратор", но мои требования были довольно простыми.