public static void Main()
DemoCron("57 0/1 * * *", DateTime.UtcNow);
DemoCron("57 */1 * * *", DateTime.UtcNow);
DemoCron("57/1 0/1 * * *", DateTime.UtcNow);
DemoCron("57/1 */1 * * *", DateTime.UtcNow);
DemoCron("*/57 0/1 * * *", DateTime.UtcNow);
DemoCron("*/57 */1 * * *", DateTime.UtcNow);
private static void DemoCron(string cronExpression, DateTime currentTime)
var cron = CronExpression.Parse(cronExpression);
var timeZone = TimeZoneInfo.Utc;
var nextScheduledTime = cron.GetOccurrences(currentTime, currentTime.AddHours(3), timeZone).GetEnumerator();
var ret = new StringBuilder();
while (nextScheduledTime.MoveNext())
ret.AppendLine("Next scheduled time: " + nextScheduledTime.Current);
Console.WriteLine($"Exampling for {cronExpression} @ {currentTime}: \r\n{ret.ToString()}");