2012-05-04 8 views
0

コロンビア時間で毎日午後9時にバックグラウンドジョブを開始するようにスケジュールするにはどうすればよいですか? Quartz.netを使用しているIm.netの日時とオフセット

public class Program 
    { 
     static void Main(string[] args) 
     { 
      // construct a scheduler 

      var schedulerFactory = new StdSchedulerFactory(); 
      var scheduler = schedulerFactory.GetScheduler(); 
      scheduler.Start(); 


      TimeZoneInfo colombianTimezone = TimeZoneInfo.FindSystemTimeZoneById("SA Pacific Standard Time");  
      var colombianTimeNow = TimeZoneInfo.ConvertTime(DateTime.Now, TimeZoneInfo.Local, 
                  colombianTimezone);  

      var job = JobBuilder.Create<EmailsJob>().Build(); 
      var now = DateTime.Now; 

      var trigger = TriggerBuilder.Create() 
          .StartAt(//INeedThisToStartEverydayat9pmColombianTime) 
          .WithSimpleSchedule(x => x.WithIntervalInHours(24).RepeatForever()) 
          .Build(); 

      scheduler.ScheduleJob(job, trigger); 
     } 
    } 

StartAtメソッドは、DateTimeOffsetオブジェクトを取ります。

答えて

2

Cronベースのスケジューリングは、お客様のニーズに適した代替方法です。

TimeZoneInfo colombianTimezone = TimeZoneInfo.FindSystemTimeZoneById("SA Pacific Standard Time");  

var job = JobBuilder.Create<EmailsJob>().Build(); 

var trigger = TriggerBuilder.Create() 
       .WithCronSchedule("0 0 21 * * ?", x => x.InTimeZone(colombianTimezone)) 
       .Build(); 

scheduler.ScheduleJob(job, trigger); 
1

これは、午後9時、今日のためにあなたのDateTimeOffsetを与える必要があります助けてください、石英に渡すUniversalTimeに変換します。

TimeZoneInfo colombianTimezone = TimeZoneInfo.FindSystemTimeZoneById("SA Pacific Standard Time"); 
DateTime columbianTime9pm = TimeZoneInfo.ConvertTime(DateTime.Today.AddHours(21), TimeZoneInfo.Local, 
               colombianTimezone); 
DateTimeOffset startAt = new DateTimeOffset(columbianTime9pm).ToUniversalTime(); 

私はそれをテストしていませんが、これはまたあなたが望むトリガを定義すると思います。

TimeZoneInfo colombianTimezone = TimeZoneInfo.FindSystemTimeZoneById("SA Pacific Standard Time"); 
DateTime startTime = TimeZoneInfo.ConvertTime(DateTime.Today.AddHours(21), TimeZoneInfo.Local, 
               colombianTimezone); 
SimpleTrigger trigger = new SimpleTrigger("myTrigger", 
              null, 
              startTime, 
              null, 
              SimpleTrigger.RepeatIndefinitely, 
              TimeSpan.FromHours(24)); 
関連する問題