/// <summary> /// Generate a cron expression that runs at a given day every x amount of months /// Example : A cron that will run at 13:00 on the 30th every 3 months /// </summary> /// <param name="runTime">Time that the cron will run</param> /// <param name="dayofTheMonthToRunOn">The day that the cron will run on (1-31)</param> /// <param name="monthsToRunOn">Time between months that the cron will run on (1-12)</param> /// <returns>Cron expression</returns> public static string GenerateMonthlyCronExpression(TimeSpan runTime, int dayofTheMonthToRunOn, int monthsToRunOn) { CronGenerationValueValidator.ValidateDayOfMonthToRunOn(dayofTheMonthToRunOn); CronGenerationValueValidator.ValidateMonthsToRunAfter(monthsToRunOn); return($"{ParseCronTimeSpan(runTime)} {dayofTheMonthToRunOn} 1/{monthsToRunOn} ? *"); }
private static string CreateYearlyValue(TimeSpan runTime, int dayOfMonthToRunOn, int monthToRunOn) { CronGenerationValueValidator.ValidateDayOfMonthToRunOn(dayOfMonthToRunOn); CronGenerationValueValidator.ValidateMonthToRunOn(monthToRunOn); CronGenerationValueValidator.ValidateDayOfMonthForFebrary(monthToRunOn, dayOfMonthToRunOn); CronGenerationValueValidator.ValidateDayOfMonthForShorterMonth(monthToRunOn, dayOfMonthToRunOn); return($"{ParseCronTimeSpan(runTime)} {dayOfMonthToRunOn} {monthToRunOn} ? *"); }
private static string CreateTimeOfMonthValue(TimeSpan runTime, TimeOfMonthToRun timeOfMonthToRun, int dayToRun, int amountOfMonthsToRunAfter) { CronGenerationValueValidator.ValidateMonthsToRunAfter(amountOfMonthsToRunAfter); if (timeOfMonthToRun != TimeOfMonthToRun.Last) { var day = ParseDayOfWeek(dayToRun); var timeOfMonuthToRunIntValue = (int)timeOfMonthToRun; return($"{ParseCronTimeSpan(runTime)} ? 1/{amountOfMonthsToRunAfter} {day}#{timeOfMonuthToRunIntValue} *"); } else { var day = dayToRun + 1; return($"{ParseCronTimeSpan(runTime)} ? 1/{amountOfMonthsToRunAfter} {day}L *"); } }
/// <summary> /// Generate a cron expression that runs every x hour(s) /// Example : A cron that will run every 2 hours /// </summary> /// <param name="hours">Amount of hours to wait before running</param> /// <returns>Cron expression</returns> public static string GenerateHourlyCronExpression(int hours) { CronGenerationValueValidator.ValidateHours(hours); return($"0 0 0/{hours} 1/1 * ? *"); }
private static string CreateMultiDayValue(TimeSpan runTime, List <int> days) { CronGenerationValueValidator.ValidateDays(days); return($"{ParseCronTimeSpan(runTime)} ? * {ParseMultiDaysList(days)} *"); }
/// <summary> /// Generate a cron expression that runs every x minutes(s) /// Example : A cron that will run every 5 minutes /// </summary> /// <param name="minutes">Amount of minutes to wait before running</param> /// <returns>Cron expression</returns> public static string GenerateMinutesCronExpression(int minutes) { CronGenerationValueValidator.ValidateMinutes(minutes); return($"0 0/{minutes} * 1/1 * ? *"); }