【问题标题】:Cron expression to run from 8PM to 6 AM从晚上 8 点到早上 6 点运行的 Cron 表达式
【发布时间】:2020-08-12 06:02:12
【问题描述】:

我正在尝试为 spring @Scheduled 注释编写一个 cron 表达式,该注释应该在晚上 8 点到早上 6 点之间的 10 分钟间隔内执行 -

@Scheduled(cron = "0 */10 20-06 * * MON-FRI", zone = "America/New_York")

但是上面的 cron 给出了“无效的反转范围”异常。当我尝试时

@Scheduled(cron = "0 */10 20-23,0-6 * * MON-FRI", zone = "America/New_York")

那么它不会在 23 和 0 之间运行。 有什么办法可以写一个可以覆盖 23 到 0 小时的 cron 表达式。

【问题讨论】:

  • 你试过这个页面吗:cronmaker.com也许它可以帮助你生成模式。

标签: java spring cron


【解决方案1】:

在下面使用它应该从晚上 8 点到早上 6 点运行

*/10 20,0-6 * * MON-FRI    (min hour day month week)

上面的表达式转换为 -

在 20 小时后的每 10 分钟以及从 0 到 6 的每个小时 每周一到周五的每一天

【讨论】:

  • 这是错误的。它应该在晚上 9 点 - 午夜执行。
【解决方案2】:

我希望您的第二个示例能够正常工作。不确定这是否是 Spring 实现中的错误。好像是这样的。

它非常冗长,但您总是可以只枚举整个值列表。

... 20,21,22,23,0,1,2,3,4,5,6 ...

【讨论】:

  • 谢谢。最后我发现 ..20-22,23,0-6.. 工作正常
猜你喜欢
  • 1970-01-01
  • 2013-03-08
  • 2014-09-29
  • 1970-01-01
  • 2016-12-29
  • 2021-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多