gpt4 book ai didi

java - 在特定时区运行 Quartz Scheduler

转载 作者:行者123 更新时间:2023-11-30 03:38:36 28 4
gpt4 key购买 nike

我正在使用 Quartz 调度程序来安排一些作业。以下是我的要求。

  • 所有作业都必须在 00:00(美国东部时间)运行。
  • 除周六外,所有作业都会每天运行。

所以第二个工作正常。但目前它不是在 EST 上运行,而是在 GMT 上运行。虽然我已将时区设置为东部时间。

Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
WeeklyCalendar weeklyOff = new WeeklyCalendar ();
weeklyOff.setTimeZone(TimeZone.getTimeZone("est"));
weeklyOff.setDayExcluded(java.util.Calendar.SATURDAY, true);
scheduler.addCalendar("weeklyOff", weeklyOff, false,false);


JobDetail jobScheduleScan = JobBuilder.newJob(jobScheduleScan.class).withIdentity("scheduleScan", "alpaca").build();


Trigger triggerScheduleScan = TriggerBuilder
.newTrigger()
.withIdentity("scheduleTrigger", "alpaca")
.startNow()
//.withSchedule(simpleSchedule().withIntervalInHours(1).repeatForever())
.withSchedule(dailyAtHourAndMinute(00, 00).inTimeZone(TimeZone.getTimeZone("est")))
.modifiedByCalendar("weeklyOff")
.build();


scheduler.scheduleJob(jobScheduleScan,triggerScheduleScan);

scheduler.start();

最佳答案

这就是问题:

TimeZone.getTimeZone("est")

我怀疑你写的是:

System.out.println(TimeZone.getTimeZone("est"));

你会得到类似的东西

sun.util.calendar.ZoneInfo
[id="GMT",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]

基本上“est”不是有效的时区 ID。我怀疑你的意思不是“EST”,而是“东部时间”,即 EST 和 EDT,适当切换。为此,您应该使用 ID“America/New_York”,因此:

weeklyOff.setTimeZone(TimeZone.getTimeZone("America/New_York"));

如果您确实想要 UTC-5 的固定时区,您可以使用:

weeklyOff.setTimeZone(TimeZone.getTimeZone("GMT-05:00"));

关于java - 在特定时区运行 Quartz Scheduler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27292410/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com