当前位置: 首页 > 知识库问答 >
问题:

如何从每30分钟20.35到23.35运行一项工作,每周有几天?

段干长恨
2023-03-14

我面临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

谁能帮帮我吗。为什么cron表达式每1小时计算一次。??

下面是代码示例:

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

共有2个答案

庞意智
2023-03-14

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

  • 0-仅以整分钟运行,

因此,当您指定一个增量而不是两个值时,Quartz(Spring使用)会尝试如下计算:

  • 首先,它计算分钟的值35——与0-59条件匹配的值,
  • 其次,它将30添加到先前的35(等于65)中不匹配的0-59条件,
  • 最后,唯一正确的值是35

因此,当分钟==35时,它每小时运行一次代码。

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

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

  1. 05,35 20-23?*THU-SUN

这意味着:

>

  • 0-仅在满分钟时运行,
  • 5,35-每30分钟运行一次,从分钟==5开始,
  • 20-23-运行时间在20到23之间,
  • -使用表达式后面部分的隐式天,
  • *-每个月运行一次,
  • THU-SUN-在周四,周五,周六和周日运行。

    这意味着:

    • 0-仅以整分钟运行,

    在这里你可以找到类似的问题。

  • 冯野
    2023-03-14

    如果希望命令从周四到周日每天从20.35运行到23.35,可以分两步进行定义:

    35   20    ? * THU-SUN
    5-59 21-23 ? * THU-SUN
    

    在一个cron表达式中设置它是不容易的,因为您不希望它运行在20.05。

    也就是说:20岁时,在35分钟时跑步。在21至23小时,每30分钟一次,偏移量为5分钟。

    我的回答是基于这样的格式:

     +---------------- 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 
    
     类似资料:
    • 问题内容: 我希望添加一个条目,以每隔30分钟,每小时的零零几点和接近小时的30分钟执行一次脚本。我有以下内容,但它似乎无法在0上运行。 我需要使用什么字符串? cron在OSX上运行。 问题答案: 做:

    • 问题内容: 我想尝试通过以下方式使用@Schedule批注: 根据日志,CronService运行良好,但是计划的任务“ runsEveryMinute”不起作用。 使用EJB计划任务如何工作? 问题答案: 按照该Javadoc中的注释,默认值是: 除小时,分钟和秒外的所有字段;和 默认情况下为小时,分钟和秒。 通过将小时值保留为默认值,它要求计时器在午夜之后每分钟运行一小时(即00:00、00:

    • 如果我创建 cronjob 以每 2:30 运行一次命令会运行吗?(这意味着,我的 cron 将在每小时 90 分钟后运行一次。 命令如:30*/2***/command/xxx= 请帮帮忙?

    • 我知道我可以为每一分钟设置cron就像 谢谢

    • 问题内容: 我试图弄清楚如何在每周的星期日运行crontab作业。我认为以下方法应该有效,但是我不确定我是否正确理解。以下正确吗? 问题答案: 这是crontab格式的说明。 因此,据此,您将在每个星期日8:05运行。

    • 我正在试图弄清楚如何在每周的周日运行crontab作业。我觉得下面应该可以,但我不确定我理解的对不对。以下是否正确?