【问题标题】:Java code to compare two cron expressions?Java代码比较两个cron表达式?
【发布时间】:2016-05-25 12:06:06
【问题描述】:

如何比较两个 cron 表达式。 我们有一个条件,比如我们需要比较两个 cron 表达式并需要检查两者是否相等

例如: "0 0/1 * 1/1 * ? *" = "0 0/1 * 1/1 * ? *" 然后我需要继续 否则需要抛出错误。

【问题讨论】:

  • 那些表达是刺痛的。为什么不比较字符串?
  • if(cron1.equals(cron2)) { //do stuff } else { throw new Exception("Crons do not match") }
  • 如果您不想比较字符串,但下一个有效时间(如果 crons 不同但可能导致相同的时间)也许这篇文章有用? stackoverflow.com/questions/26632880/…

标签: java cron quartz-scheduler cronexpression


【解决方案1】:

我想你可以这样:

    String str1 = "0 0/1 * 1/1 * ? *";
    String str2 = "0 0/1 * 1/1 * ? *";
    if (str1.equals(str2)) {
        // do what you want
    } else {
        throw new Exception("Strings do not match");
    }

【讨论】:

    【解决方案2】:

    这个问题是有效的,尽管这个例子很糟糕。考虑以下情况:

    cron1 = "* * * * MON"//unix
    cron2 = "*/1 * * * 1"//unix
    cron3= "0 * * * *"//unix
    cron4="0 * * * * MON *"//quartz
    //now we compare crons
    cron1.equivalent(cron2) -> true
    cron1.equivalent(cron3) -> false
    cron1.equivalent(cron4) -> true
    

    如果您正在寻找可以进行此类比较的库,请查看cron-utils

    解析一个 cron 表达式后,会创建一个 Cron 对象,该对象有一个比较 crons 的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-08
      • 1970-01-01
      • 1970-01-01
      • 2011-02-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多