来自 Quartz Scheduler javadocssetTimeZone
的类方法CronTrigger
:
如果在此方法之后调用 setCronExpression(CronExpression),则 CronExpression 上的 TimeZone 设置将“获胜”。但是,如果在此方法之后调用 setCronExpression(String),则此方法应用的时区将保持有效,因为 String cron 表达式不带时区!
以不同的顺序调用两个 setter 有什么区别?
来自 Quartz Scheduler javadocssetTimeZone
的类方法CronTrigger
:
如果在此方法之后调用 setCronExpression(CronExpression),则 CronExpression 上的 TimeZone 设置将“获胜”。但是,如果在此方法之后调用 setCronExpression(String),则此方法应用的时区将保持有效,因为 String cron 表达式不带时区!
以不同的顺序调用两个 setter 有什么区别?
这意味着如果您在已经使用 setTimeZone 设置了 TimeZone 时调用 setCronExpression(CronExpression),您指定的 TimeZone 将被 CronExpression 的 TimeZone 覆盖。这是因为 CronExpression 类包含一个 TimeZone。
但是,String cron 表达式不包含任何时区信息 - 因此您在 setTimeZone 中指定的时区将保持有效。
那有意义吗?
分三种情况——
您调用 setTimeZone(),然后调用 setCronExpression(CronExpression)。与 CronExpression 关联的时区将适用。
您调用 setTimeZone(),然后调用 setCronExpression(String)。setTimeZone() 指定的时区将适用,因为 String cron 表达式没有关联的时区。
您调用 setCronExpression(CronExpression) 或 setCronExpression(String),然后调用 setTimeZone()。setTimeZone() 方法指定的时区将适用。