0

コロンビア時間の毎日午後9時に開始するバックグラウンドジョブをスケジュールするにはどうすればよいですか?私はquartz.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オブジェクトを取ります。

助けてください

4

2 に答える 2

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);
于 2012-05-05T06:56:59.620 に答える
1

これにより、今日の午後 9 時の DateTimeOffset が UniversalTime に変換されて Quartz に渡されます。

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));
于 2012-05-04T23:23:31.193 に答える