1
我正在使用Quartz調度程序來安排一些作業。以下是我的要求。在特定的時區運行Quartz Scheduler
- 所有工作必須在00:00(美國東部時間)運行。
- 除週六外,所有工作將每天進行。
所以第二個工作正常。但不是在EST上運行,而是在GMT上運行。雖然我已將時區設置爲EST。
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();
我已嘗試 System.out.println(TimeZone.getTimeZone(「America/New_York」)); System.out.println(TimeZone.getTimeZone(「GMT-05:00」)); 但它不工作。扔你之前提到的相同。 sun.utill.calendar.ZoneInfo .......... – Shibankar 2014-12-04 11:35:19
@Angel:這兩個顯示ID爲「GMT」?這非常不尋常 - 特別是對於後者,因爲這是構建固定偏移時區的具體方式。你在運行什麼JVM,在什麼操作系統下運行? 'TimeZone.getAvailableIDs'返回什麼? – 2014-12-04 11:37:18
謝謝。 TimeZone.getAvailableIDs幫助了我。其實它應該「EST」而不是「est」。它現在修復了。 – Shibankar 2014-12-04 11:56:53