Java Amazon EC2-石英和作业未在正确的时间运行

Java Amazon EC2-石英和作业未在正确的时间运行,java,amazon-web-services,amazon-ec2,cron,quartz-scheduler,Java,Amazon Web Services,Amazon Ec2,Cron,Quartz Scheduler,我在AmazonEC2服务器上部署了一个java应用程序。 我使用quartz安排各种作业 我试着安排一个作业在上午9点运行——我注意到它直到上午10点才执行 然后我尝试在格林威治标准时间上午9点-5点执行一个作业-应该在格林威治标准时间下午2点执行,但它实际上是在格林威治标准时间下午3点执行的 进一步分析后,我注意到我的亚马逊服务器上的时间设置为UTC,目前比格林尼治标准时间晚一小时 我只是想知道-由于作业没有在正确的时间执行,我的设置的哪一部分当前不正确 设置cron触发器时是否需要指定任何

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

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

进一步分析后,我注意到我的亚马逊服务器上的时间设置为UTC,目前比格林尼治标准时间晚一小时

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

设置cron触发器时是否需要指定任何内容?我使用CronScheduleBuilder在quartz中设置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运行时提供的任何帮助。格林尼治标准时间在3月的最后一个星期日从标准时间改为夏令时

我建议您将所有工作时间定为UTC。那么工作的开始时间在夏天和冬天是不同的。你必须决定这是否适合你

否则,您必须创建两个计时器,一个从三月到十月运行,另一个从十月到三月运行,时间相差一小时


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

1小时的差异是否可能与夏令时有关?尝试设置系统的时区{EC2实例}检查常用的UTC和GMT是否相同。两者都不考虑夏令时。不要将时区(GMT+X、GMT-Y)与本地名称和/或夏令时混淆。好像现在是英国夏令时16:07(英国夏令时=GMT+1)。