2014-09-29 132 views
0

我想安排Quartz.Net在每個特定時間的某個工作日運行。時間表應該永遠運行。Quartz.Net在特定時間在特定日期觸發

例如:

  • 週一@ 12:00
  • 週四@ 12:00
  • 週六@ 12:00

我有以下的配置,但它不榮譽時間,每次製作都是00:00,儘管是在正確的日子。

DateTimeOffset off = new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, DateTime.UtcNow.Day, 12, 0, 0, DateTimeKind.Utc); 

var trigger = TriggerBuilder.Create(). 
    WithIdentity("Test"). 
    WithDailyTimeIntervalSchedule(x => 
     x.InTimeZone(TimeZoneInfo.Utc). 
     WithIntervalInHours(24). 
     OnDaysOfTheWeek(process.RunAtDays)). 
    StartAt(off). 
    Build(); 

從這個輸出看起來像:

  • 2014年1月10日@ 00:00
  • 2014年8月10日@ 00:00
  • 15/10/2014 @ 00:00

我已經嘗試過各種組合,目前爲止沒有運氣讓這個工作成功。

相信相當於cron配置爲:

"0 00 12 ? * MON,THU,SAT" 

但我需要的值由最終用戶可配置的。

回答

1

在玩了好幾個小時的價值觀後,我相信我有合適的組合來完成任務。我需要設置StartingDailyAt()是我想重複的時間。完成的代碼如下所示:

DateTimeOffset off = new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, DateTime.UtcNow.Day, 12, 0, 0, DateTimeKind.Utc); 

var trigger = TriggerBuilder.Create(). 
    WithIdentity("Test"). 
    WithDailyTimeIntervalSchedule(x => 
     x.InTimeZone(TimeZoneInfo.Utc). 
     WithIntervalInHours(24). 
     OnDaysOfTheWeek(process.RunAtDays). 
     StartingDailyAt(TimeOfDay.HourMinuteAndSecondOfDay(12, 0, 0))). 
    StartAt(off). 
    Build();