1

来自 Quartz Scheduler javadocssetTimeZone的类方法CronTrigger

如果在此方法之后调用 setCronExpression(CronExpression),则 CronExpression 上的 TimeZone 设置将“获胜”。但是,如果在此方法之后调用 setCronExpression(String),则此方法应用的时区将保持有效,因为 String cron 表达式不带时区!

以不同的顺序调用两个 setter 有什么区别?

4

2 回答 2

2

这意味着如果您在已经使用 setTimeZone 设置了 TimeZone 时调用 setCronExpression(CronExpression),您指定的 TimeZone 将被 CronExpression 的 TimeZone 覆盖。这是因为 CronExpression 类包含一个 TimeZone。

但是,String cron 表达式不包含任何时区信息 - 因此您在 setTimeZone 中指定的时区将保持有效。

那有意义吗?

于 2010-07-26T07:25:03.563 回答
1

分三种情况——

  1. 您调用 setTimeZone(),然后调用 setCronExpression(CronExpression)。与 CronExpression 关联的时区将适用。

  2. 您调用 setTimeZone(),然后调用 setCronExpression(String)。setTimeZone() 指定的时区将适用,因为 String cron 表达式没有关联的时区。

  3. 您调用 setCronExpression(CronExpression) 或 setCronExpression(String),然后调用 setTimeZone()。setTimeZone() 方法指定的时区将适用。

于 2010-07-26T07:45:38.093 回答