Amazon EC2 - Quartz 和 Job 未在正确的时间 运行

Amazon EC2 - Quartz and Job not running at correct time

我在 Amazon EC2 服务器上部署了一个 java 应用程序。 我使用 quartz 来安排各种工作。

我尝试在上午 9 点将作业安排到 运行 - 我注意到它直到上午 10 点才执行 然后我尝试在 GMT-5 上午 9 点执行一项工作 - 应该在格林威治标准时间下午 2 点执行,但实际上它在格林威治标准时间下午 3 点执行

经过进一步分析,我注意到我的亚马逊服务器上的时间设置为 UTC,目前比 GMT 晚一个小时

我只是想知道 - 我的设置的哪一部分当前不正确,因为作业没有在正确的时间执行?

设置cron触发器时需要指定什么吗?我正在使用 CronScheduleBuilder

按如下方式在石英中设置 Cron
    CronExpression cronExpression = new CronExpression(cronValue);
    TimeZone timeZone = TimeZone.getTimeZone("Etc/GMT-5");
     cronExpression.setTimeZone(timeZone);

     Trigger trigger = TriggerBuilder.newTrigger().withIdentity(triggerName).startNow()
                .withSchedule(CronScheduleBuilder.cronSchedule(cronExpression)).build();

        JobDetail job = JobBuilder.newJob(MyCloudTasksServerTaskExecutor.class).withIdentity(taskId.toString())
                .storeDurably(true).build();

非常感谢任何帮助

如您所写,EC2 服务器是 运行 UTC。 GMT 在 3 月的最后一个星期日从标准时间更改为夏令时。

我建议使用 UTC 为您的所有作业计时。那么夏季和冬季的工作开始时间是不同的。您必须决定这是否适合您。

否则您必须创建两个计时器,一个从 3 月到 10 月 运行ning,另一个从 10 月到 3 月,两者相差一个小时。

使用 UTC 的 EC2 实例 运行 也是合乎逻辑的,因为这样更容易实现跨时区的转换。