views:

62

answers:

2

This is from Quartz Scheduler's javadocs for method setTimeZone of class CronTrigger:

If setCronExpression(CronExpression) is called after this method, the TimeZon setting on the CronExpression will "win". However if setCronExpression(String) is called after this method, the time zone applied by this method will remain in effect, since the String cron expression does not carry a time zone!

Can anybody please explain whats the difference in calling both setters in different sequences?

+2  A: 

What this means is that if you call setCronExpression(CronExpression) when you have already set a TimeZone using setTimeZone, the TimeZone you specified will be overwritten by the CronExpression's TimeZone. This is because the CronExpression class contains a TimeZone.

However, the String cron expression does not contain any time zone information - therefore the time zone you specified in setTimeZone will remain in effect.

Does that make sense?

Phill Sacre
Thank you for the effort Phill, I got the point now :) But the samG's answer was easier for me to understand!
craftsman
+1  A: 

There are three scenarios-

  1. You call setTimeZone() followed by setCronExpression(CronExpression). The time zone associated with the CronExpression will apply.

  2. You call setTimeZone() followed by setCronExpression(String). The time zone specified by setTimeZone() will apply since the String cron expression doesn't have a time zone associated.

  3. You call setCronExpression(CronExpression) or setCronExpression(String) followed by setTimeZone(). The time zone specified by setTimeZone() method will apply.

Samit G.