setCronExpression(CronExpression) 和 setCronExpression(String) 之间的区别
来自 Quartz Scheduler javadocs 用于类 CronTrigger
的方法 setTimeZone
:
如果在此方法之后调用 setCronExpression(CronExpression),则 CronExpression 上的 TimeZone 设置将“获胜”。但是,如果调用 setCronExpression(String) 使用此方法后,此方法应用的时区将保留在 效果,因为 String cron 表达式不携带时区!
以不同的顺序调用两个 setter 有什么区别?
From the Quartz Scheduler javadocs for the method setTimeZone
of class CronTrigger
:
If setCronExpression(CronExpression) is called after this method, the TimeZone 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!
What's the difference in calling both setters in different sequences?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
存在三种情况 -
您调用 setTimeZone(),然后调用 setCronExpression(CronExpression)。将应用与 CronExpression 关联的时区。
您调用 setTimeZone(),然后调用 setCronExpression(String)。由于 String cron 表达式没有关联的时区,因此将应用 setTimeZone() 指定的时区。
您调用 setCronExpression(CronExpression) 或 setCronExpression(String),然后调用 setTimeZone()。将应用 setTimeZone() 方法指定的时区。
There are three scenarios-
You call setTimeZone() followed by setCronExpression(CronExpression). The time zone associated with the CronExpression will apply.
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.
You call setCronExpression(CronExpression) or setCronExpression(String) followed by setTimeZone(). The time zone specified by setTimeZone() method will apply.
这意味着,如果您在已经使用 setTimeZone 设置 TimeZone 时调用 setCronExpression(CronExpression),则您指定的 TimeZone 将被 CronExpression 的 TimeZone 覆盖。这是因为 CronExpression 类包含 TimeZone。
但是,String cron 表达式不包含任何时区信息 - 因此您在 setTimeZone 中指定的时区将仍然有效。
这有道理吗?
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?