Reputation: 846
I am using Quartz scheduler to schedule some jobs. Below are my requirement.
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();
Upvotes: 2
Views: 5775
Reputation: 1501906
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"));
Upvotes: 2