目前我正在使用 Quartz.Net Scheduler 来安排不同的作业。在 UI 中,用户可以配置频率,即每周和星期几和时间,以触发作业。一旦用户可以配置这些属性,我当前正在显示下一个触发时间。
示例:每周日凌晨 2 点 CronString: 0 0 2 ? * SUN * 当前日期:2013 年 3 月 8 日星期五时区:EST UTC-5.30 下一个触发时间:2013 年 3 月 10 日星期日凌晨 2:00
这个工作正常。但如果 DST 将在 2 月 10 日开始,那么那一天就不会是凌晨 2:00。所以 CronExpression 抛出以下错误:
CronExpression exp = new CronExpression(cronStr);
var dt = exp.GetNextValidTimeAfter(DateTime.Now.ToUniversalTime()).Value.ToLocalTime();
return String.Format("{0:dddd, MMMM d, yyyy}", dt);
异常:引发 ArgumentException。消息:“提供的 DateTime 表示无效时间。”
由于日历中不存在这样的日期时间,我想跳过那一天并显示下一个有效日期,即 2013 年 3 月 17 日星期日凌晨 2:00
帮助我如何解决这个问题,因为它是由 .Net CLR 在 Quartz 代码中内部抛出的。