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