using ParseOptions = NCrontab.CrontabSchedule.ParseOptions;
public static void Main()
var options = new ParseOptions()
var expression = "0 10 * * *";
var schedule = CrontabSchedule.Parse(
options: DetermineCronOptions(expression));
var utcNow = DateTime.UtcNow;
var occurences = schedule.GetNextOccurrences(utcNow, utcNow.AddDays(31));
foreach (var occurrence in occurences.Take(20))
var utcOcc = DateTime.SpecifyKind(occurrence, DateTimeKind.Utc);
Console.WriteLine("UTC: " + utcOcc.ToString() + ", PST: " + TimeZoneInfo.ConvertTimeBySystemTimeZoneId(utcOcc, "America/Los_Angeles"));
private static ParseOptions DetermineCronOptions(string expression)
var options = new CrontabSchedule.ParseOptions()
IncludingSeconds = expression.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Length != 5