【问题标题】:Scheduling tasks on London time while system time is NY在伦敦时间安排任务,而系统时间是纽约
【发布时间】:2011-07-27 17:23:34
【问题描述】:

我们的系统配置了美国/东部时间,并且我们有一些计划任务必须在特定的欧洲/伦敦时间发生。我们如何做到这一点,并确保我们的任务在日光时间更改生效时正确触发?

我们使用 Quartz 进行调度。目前我们使用SimpleTrigger而不是CronTrigger来安排任务。 docs 表明 CronTrigger 应该可以工作 - 但我认为这是假设预定时间和系统时间在同一时区。

【问题讨论】:

    标签: java datetime cron scheduled-tasks quartz-scheduler


    【解决方案1】:

    CronTrigger 确实可以更好地满足您的目的,因为您可以使用其setTimeZone 方法来定义在解析触发器的CronExpression 时将使用哪个时区。不,计划时间和系统时间不需要在同一时区。所以,它当然应该工作。 (当然,请注意您链接到的文档中有关夏令时和 crontriggers 的说明。)

    【讨论】:

    • 谢谢。你知道你是否可以使用 CronTrigger 说“每天在伦敦时间 14:00 运行这项工作”?如果由于夏令时切换而调整了时间,该作业是否仍能在伦敦时间 14:00 正确运行?
    • 是的,它应该可以正常运行。唯一可能出现问题的情况是,如果作业应该在时间切换生效的同一时间运行。这可能会导致跳过或重复,具体取决于时间开关是向前还是向后。
    【解决方案2】:

    CronTrigger 应该没问题,只要您使用正确的时区构建它 - 您可以使用 CronScheduleBuilder.inTimeZone 确保这一点。至少这是我对文档的解释......

    【讨论】:

      【解决方案3】:

      您也可以使用 SimpleTrigger 执行此操作,但您必须注意构建日期以用作触发器的 startTime 属性(在所需的时区中构建该日期)。

      【讨论】:

        猜你喜欢
        • 2012-01-01
        • 2011-02-02
        • 2014-09-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多