强制Quartz.NET在UTC中工作?

时间:2013-06-03 17:38:09

标签: cron quartz.net

这与Quartz.NET - Shouldn't this unit test pass?有关,但并不完全相同。

我有GMT-4的服务器和GMT-7的服务器。他们都使用Quartz.NET v2.1.2.400。我需要两个服务器基于GMT在同一时间(在一个小容差内)做同样的事情,使用这个cron字符串:

0 0 5,12,17 * * ?

但是,一台服务器在另一台服务器之前执行此作业。我需要他们两个同步。我正在使用下面的代码。我认为Quartz在内部计算GMT中的时间/时间表,但在外部进行本地时间。我希望它一直是GMT。我怎么能这样做?

我目前的代码如下:

var trigger = new CronTriggerImpl(mytriggername) { CronExpressionString = cronString };
var job = new JobDetailImpl(jobName, jobType);
Quartz.ScheduleJob(job, trigger);

感谢。

1 个答案:

答案 0 :(得分:2)

在CronTrigger的java实现中有一个setTimeZone方法,在.NET实现中有一个TimeZone属性。

然后,您可以将两个匹配的触发器的时区设置为UTC。

当然,只有在您的计算机上的服务器时钟以某种方式使用NTP或类似方式同步时,这才会起作用。