2012-05-04 3 views
0

콜롬비아 시간으로 매일 오후 9시에 백그라운드 작업을 매일 시작하도록 예약 할 수 있습니까? 메신저를 사용하여 메신저.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));