Run Quartz Scheduler on a specific TimeZone

I am using Quartz scheduler to schedule some jobs. Below are my requirement.

  • All the jobs has to run at 00:00 hrs (EST).
  • All the jobs will run everyday except Saturday.

So the 2nd one is working fine. But instead of running it on EST it currently runs on GMT. Though i have set the Timezone as 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();
Jon Skeet
people
quotationmark

This is the problem:

TimeZone.getTimeZone("est")

I suspect you write:

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

you'll get something like

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

Basically "est" isn't a valid time zone ID. I suspect you don't mean "EST" anyway, but "Eastern Time" which is EST and EDT, switching appropriately. For that, you should use an ID of "America/New_York", so:

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

If you really want a fixed time zone of UTC-5, you can use:

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

people

See more on this question at Stackoverflow