using System.Collections.Generic;
public static void Main()
DateTime vLastRun = DateTime.SpecifyKind(new DateTime(2023, 8 , 9, 8, 59, 0), DateTimeKind.Utc);
string vLastRunString = vLastRun.ToString("yyyy-MM-dd HH:mm:ss");
CronExpression vCron = CronExpression.Parse("0 * * * * ?", CronFormat.IncludeSeconds);
DateTime? vLastRunTime = vCron.GetNextOccurrence(vLastRun, false);
DateTime? vNewRunTime = vCron.GetNextOccurrence(DateTime.UtcNow);
IEnumerable<DateTime> vList = vCron.GetOccurrences(vLastRun, DateTime.UtcNow).Take(2);
Console.WriteLine(" - - - - Now - - - - ");
Console.WriteLine(DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss"));
Console.WriteLine(" - - - - Old - - - - ");
Console.WriteLine(vLastRunString);
Console.WriteLine(vLastRunTime.Value.ToString("yyyy-MM-dd HH:mm:ss"));
Console.WriteLine(" - - - - New - - - - ");
Console.WriteLine(DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss"));
Console.WriteLine(vNewRunTime.Value.ToString("yyyy-MM-dd HH:mm:ss"));
Console.WriteLine(" - - - - Scheduled Values - - - - ");
Console.WriteLine(vList.Count());
foreach(var c in vList) {
Console.WriteLine(c.ToString("yyyy-MM-dd HH:mm:ss"));
Console.WriteLine(" - - - - Missed? - - - - ");
Console.WriteLine(vMissedRun);