Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在每周的几天内,每30分钟从20.35运行一个作业到23.35?_Java_Cron_Cronexpression - Fatal编程技术网

Java 如何在每周的几天内,每30分钟从20.35运行一个作业到23.35?

Java 如何在每周的几天内,每30分钟从20.35运行一个作业到23.35?,java,cron,cronexpression,Java,Cron,Cronexpression,我面临cron表达式的问题。 从周四到周日,我必须每30分钟运行一次方法。时间从20:35分钟开始到23:35分钟 Cron表达式: "0 35/30 20-23 ? * THU-SUN"; 据我了解,;我的方法将在周四的20:35分调用,每30分钟调用一次,直到周日 我的期望: 方法将按照以下计时进行调用: Thu May 19 20:35:00 IST 2016 Thu May 19 21:05:00 IST 2016 Thu May 19 21:40:00 IST 2016 Thu M

我面临cron表达式的问题。 从周四到周日,我必须每30分钟运行一次方法。时间从20:35分钟开始到23:35分钟

Cron表达式:

"0 35/30 20-23 ? * THU-SUN";
据我了解,;我的方法将在周四的20:35分调用,每30分钟调用一次,直到周日

我的期望:

方法将按照以下计时进行调用:

Thu May 19 20:35:00 IST 2016
Thu May 19 21:05:00 IST 2016
Thu May 19 21:40:00 IST 2016
Thu May 19 20:35:00 IST 2016
Thu May 19 21:35:00 IST 2016
Thu May 19 22:35:00 IST 2016
但是;方法get通过以下计时进行调用:

Thu May 19 20:35:00 IST 2016
Thu May 19 21:05:00 IST 2016
Thu May 19 21:40:00 IST 2016
Thu May 19 20:35:00 IST 2016
Thu May 19 21:35:00 IST 2016
Thu May 19 22:35:00 IST 2016
有人能帮我吗。为什么cron表达式每1小时计算一次

下面是代码示例:

@Scheduled(cron="0 35/30 20-23 ? * THU-SUN")
  public void startInboundSFTPChannel(){
      logger.info("Cron job started....");
      downloadSftpFilesController();
  }

据我所知,您的表达式(
035/3020-23?*THU-SUN
)的意思是:

  • 0
    -仅以整分钟运行
  • 35/30
    -从35开始每30分钟运行一次
  • 20-23
    -运行时间介于20和23之间
  • -使用表达式后面部分的隐式天数
  • *
    每月运行一次
  • THU-SUN
    -周四、周五、周六和周日跑步
因此,当您指定了一个增量而不是两个值(Spring使用)时,将尝试如下计算:

  • 首先,它计算分钟的值
    35
    ——与
    0-59
    条件匹配的值
  • 其次,它将
    30
    添加到先前的
    35
    (等于
    65
    )中不匹配的
    0-59
    条件
  • 最后,唯一正确的值是
    35
因此,当分钟数==
35时,它每小时运行一次代码

您能在2016年5月19日星期四20:05:00再次运行代码吗

如果是,则可以使用以下表达式之一:

  • 05,35 20-23?*THU-SUN
  • 这意味着:

    • 0
      -仅以整分钟运行
    • 5,35
      -每30分钟运行一次,从分钟==5开始
    • 20-23
      -运行时间介于20和23之间
    • -使用表达式后面部分的隐式天数
    • *
      -每月运行一次
    • THU-SUN
      -周四、周五、周六和周日跑步

    • 05/3020-23?*THU-SUN
    这意味着:

    • 0
      -仅以整分钟运行
    • 5/30
      -从分钟==5开始,每30分钟运行一次
    • 20-23
      -运行时间介于20和23之间
    • -使用表达式后面部分的隐式天数
    • *
      -每月运行一次
    • THU-SUN
      -周四、周五、周六和周日跑步

    您也会发现类似的问题。

    如果您希望命令每天从20.35运行到23.35,从星期四到星期天,您可以通过两个步骤来定义它:

    35   20    ? * THU-SUN
    5-59 21-23 ? * THU-SUN
    
    在一个cron表达式中设置它并不容易,因为您不希望它在20.05运行

    也就是说:20分,35分跑。在21至23小时


    我的回答基于以下格式:

     +---------------- minute (0 - 59)
     |  +------------- hour (0 - 23)
     |  |  +---------- day of month (1 - 31)
     |  |  |  +------- month (1 - 12)
     |  |  |  |  +---- day of week (0 - 6) (Sunday=0 or 7)
     |  |  |  |  |
     *  *  *  *  *  command to be executed 
    

    您应该告诉我们您的cron表达式是如何使用的(可能添加一些代码?)使用起来并不简单:
    “0 5,35 20-23?*THU-SUN”?嗨,RC..我添加了一些代码部分。请检查。嗨@tommus,这个cron表达式不起作用。因为它将从晚上8点到11点,每5分钟和35分钟启动一次。所以你希望它从周四的20点35分开始,每30分钟运行一次,直到周日的23点35分,或者在这个时间范围内每天运行一次?明白了。谢谢如果我从20:35分钟开始,加上30分钟,那么加起来就是65分钟。哪个将大于(0-59)。这就是为什么我的cron表达式计算不正确的原因。@Kumar是的,没错。您始终可以在“感谢兄弟”中计算cron表达式@fedorquiYep@fedorqui。我必须修改cron表达式。分钟数不得超过59分钟。