【问题标题】:quartz hardware clock石英硬件时钟
【发布时间】:2010-04-27 14:23:29
【问题描述】:

我在我的项目中使用 quartz 并且有一项 cron 工作。 我给触发器(CronTrigger)作为运行参数的 cron 表达式与 pc 的硬件时钟一致。有什么想法可以告诉工作改为查看软件时钟吗?

例如,我有一个 Job 运行了一年,它正好在晚上 10 点运行,有一天我们切换到夏令时,我希望 cron 作业能够自动更新。

罗马

【问题讨论】:

  • 您的服务器是否通过 ntp 更新并同步?顺便说一句:硬件时钟比软件时钟更准确......
  • 我不关心准确性,我需要针对我的具体问题的应用解决方案。我猜服务器是更新视图ntp。 ?谁可能会为这个问题减分???

标签: java time quartz-scheduler


【解决方案1】:

“夏令时”是指更改为Daylight_saving_time

这种情况将自动处理。

您唯一需要注意的是在实际轮班期间安排的工作。

在前移中,时间从1am (std)2am (std) 再到1am (dst)。 计划在凌晨 1 点到 2 点之间运行的作业需要确保它们不会运行两次。

向后移动可能会产生相反的效果。时间从1am (dst)2am (dst) 再到3am (std)。根据 Quartz 的实现方式,它可以跳过间隔内的作业,也可以在班次后运行间隔内的所有作业。

如果这是一项绝对必须运行的工作,请将其安排在轮班窗口之外(轮班时间 +/- 1 小时)。

【讨论】:

    【解决方案2】:

    简单,始终使用UTC作为系统时间(和时区)在服务器上

    我是认真的,这涉及诸如夏令时规则之类的问题,有助于确保时间几乎*单调增加(即时间不会向后“跳跃”,打破了与时间相关的软件的许多假设),以及跨时区的服务器和/或用户(即地理上分布的计算机和/或用户)。

    *) 对于这种情况,我将忽略 leap seconds

    由于这似乎是计算机系统和操作系统相关工具(即cron)的问题,我认为这个问题不适合StackOverflow.com,请考虑将其移至ServerFault.com

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-23
      相关资源
      最近更新 更多