一个Cron- 表达式是一个由六至七个字段组成由空格分隔的字符串,其中 6 个字段是必须的而一个是可选的,如下:
字段名 允许的值 允许的特殊字符
秒 0-59 , - * /
分 0-59 , - * /
小时 0-23 , - * /
日 1-31 , - * ? / L W C
月 1-12 or JAN-DEC , - * /
周几 1-7 or SUN-SAT , - * ? / L C #
年 ( 可选字段 ) empty, 1970-2099 , - * /
''*'' 字符可以用于所有字段,在 “ 分 ” 字段中设为 "*" 表示 " 每一分钟 " 的含义。
''?'' 字符可以用在 “ 日 ” 和 “ 周几 ” 字段 . 它用来指定 '' 不明确的值 ''. 这在你需要指定这两个字段中的某一个值而不是另外一个的时候会被用到。在后面的例子中可以看到其含义。
''-'' 字符被用来指定一个值的范围,比如在 “ 小时 ” 字段中设为 "10-12" 表示 "10 点到 12 点 ".
'','' 字符指定数个值。比如在 “ 周几 ” 字段中设为 "MON,WED,FRI" 表示 "the days Monday, Wednesday, and Friday".
''/'' 字符用来指定一个值的的增加幅度 . 比如在 “ 秒 ” 字段中设置为 "0/15" 表示 " 第 0, 15, 30, 和 45 秒 " 。而 "5/15" 则表示 " 第 5, 20, 35, 和 50". 在 ''/'' 前加 "*" 字符相当于指定从 0 秒开始 . 每个字段都有一系列可以开始或结束的数值。对于 “ 秒 ” 和 “ 分 ” 字段来说,其数值范围为 0 到 59 ,对于 “ 小时 ” 字段来说其为 0 到 23, 对于 “ 日 ” 字段来说为 0 到 31, 而对于 “ 月 ” 字段来说为 1 到 12 。 "/" 字段仅仅只是帮助你在允许的数值范围内从开始 " 第 n" 的值。 因此 对于 “ 月 ” 字段来说 "7/6" 只是表示 7 月被开启而不是 “ 每六个月 ”, 请注意其中微妙的差别。
''L'' 字符可用在 “ 日 ” 和 “ 周几 ” 这两个字段。它是 "last" 的缩写 , 但是在这两个字段中有不同的含义。例如 ,“ 日 ” 字段中的 "L" 表示 " 一个月中的最后一天 " —— 对于一月就是 31 号对于二月来说就是 28 号(非闰年)。而在 “ 周几 ” 字段中 , 它简单的表示 "7" or "SAT" ,但是如果在 “ 周几 ” 字段中使用时跟在某个数字之后 , 它表示 " 该月最后一个星期 ×" —— 比如 "6L" 表示 " 该月最后一个周五 " 。当使用 ''L'' 选项时 , 指定确定的列表或者范围非常重要,否则你会被结果搞糊涂的。
''W'' 可用于 “ 日 ” 字段。用来指定历给定日期最近的工作日 ( 周一到周五 ) 。比如你将 “ 日 ” 字段设为 "15W" ,意为 : " 离该月 15 号最近的工作日 " 。因此如果 15 号为周六,触发器会在 14 号即周五调用。如果 15 号为周日 , 触发器会在 16 号也就是周一触发。如果 15 号为周二 , 那么当天就会触发。然而如果你将 “ 日 ” 字段设为 "1W", 而一号又是周六 , 触发器会于下周一也就是当月的 3 号触发 , 因为它不会越过当月的值的范围边界。 ''W'' 字符只能用于 “ 日 ” 字段的值为单独的一天而不是一系列值的时候。
''L''和 ''W'' 可以组合用于 “ 日 ” 字段表示为 ''LW'' ,意为 " 该月最后一个工作日 " 。
''#'' 字符可用于 “ 周几 ” 字段。该字符表示 “ 该月第几个周 ×” ,比如 "6#3" 表示该月第三个周五 ( 6 表示周五而 "#3" 该月第三个 ) 。再比如 : "2#1" = 表示该月第一个周一而 "4#5" = 该月第五个周三。注意如果你指定 "#5" 该月没有第五个 “ 周 ×” ,该月是不会触发的。
''C'' 字符可用于 “ 日 ” 和 “ 周几 ” 字段,它是 "calendar" 的缩写。 它表示为基于相关的日历所计算出的值(如果有的话)。如果没有关联的日历 , 那它等同于包含全部日历。 “ 日 ” 字段值为 "5C" 表示 " 日历中的第一天或者 5 号以后 " , “ 周几 ” 字段值为 "1C" 则表示 " 日历中的第一天或者周日以后 " 。
对于“ 月份 ” 字段和 “ 周几 ” 字段来说合法的字符都不是大小写敏感的。
下面是一些完整的例子:
表达式 含义
"0 0 12 * * ?" 每天中午十二点触发
"0 15 10 ? * *" 每天早上 10 : 15 触发
"0 15 10 * * ?" 每天早上 10 : 15 触发
"0 15 10 * * ? *" 每天早上 10 : 15 触发
"0 15 10 * * ? 2005" 2005年的每天早上 10 : 15 触发
"0 * 14 * * ?" 每天从下午 2 点开始到 2 点 59 分每分钟一次触发
"0 0/5 14 * * ?" 每天从下午 2 点开始到 2 : 55 分结束每 5 分钟一次触发
"0 0/5 14,18 * * ?" 每天的下午 2 点至 2 : 55 和 6 点至 6 点 55 分两个时间段内每 5 分钟一次触发
"0 0-5 14 * * ?" 每天 14:00 至 14:05 每分钟一次触发
"0 10,44 14 ? 3 WED" 三月的每周三的 14 : 10 和 14 : 44 触发
"0 15 10 ? * MON-FRI" 每个周一、周二、周三、周四、周五的10 : 15 触发
"0 15 10 15 * ?" 每月 15 号的 10 : 15 触发
"0 15 10 L * ?" 每月的最后一天的 10 : 15 触发
"0 15 10 ? * 6L" 每月最后一个周五的 10 : 15 触发
"0 15 10 ? * 6L" 每月最后一个周五的 10 : 15 触发
"0 15 10 ? * 6L 2002-2005" 2002年至 2005 年的每月最后一个周五的 10 : 15 触发
"0 15 10 ? * 6#3" 每月的第三个周五的 10 : 15 触发
分享到:
相关推荐
本篇文章将深入探讨如何在Spring与Quartz结合的环境中动态设置定时时间。 首先,Spring框架提供了方便的依赖注入和AOP(面向切面编程)功能,使得集成其他库变得更加容易。Quartz是一个强大的作业调度框架,它可以...
【Spring MVC + Quartz 动态设置时间】 在Java Web开发中,Spring MVC和Quartz库经常被用来构建灵活的任务调度系统。Quartz是一个强大的、开放源码的作业调度框架,可以用于创建、调度和执行重复任务。而Spring MVC...
在 Quartz 任务调度器中,我们需要更新任务触发器的时间设置,以便于任务可以根据新的时间规则来执行。 6. RESCHEDULE THE JOB 最后,我们需要重新安排任务的执行,以便于 Quartz 任务调度器可以根据新的时间规则...
### Quartz的Cron时间设置详解 #### 一、Cron表达式概述 Cron表达式是一种用于配置定时任务执行频率的格式化字符串。在Quartz框架中,Cron表达式通常用于Trigger对象来定义Job执行的时间规则。一个标准的Cron表达式...
7. **Quartz时间设置**:`Quartz时间设置.txt`可能包含了具体的Cron表达式或其他时间配置示例。Cron表达式由7个子表达式组成,分别代表秒、分、小时、日、月、周几和年。例如,"0 0 12 * * ?" 表示每天中午12点执行...
Quartz是一个开源的作业调度框架,它允许程序员和系统管理员安排任务在特定的时间点或按照预定义的周期执行。在JavaScript环境中,虽然Quartz通常与Java应用服务器一起使用,但可以通过一些方式将其表达式功能引入到...
定时任务时间参数转换,cron表达式轻易转换,更易理解时间参数设置类型及转换含义
6. **优化Quartz.NET配置**:确保Quartz.NET配置文件(通常是quartz.config)中的设置适合你的需求,例如,设置适当的线程池大小,以便在多并发任务时能有效处理。 总结起来,Quartz和IIS结合使用时,可能会遇到IIS...
以下是对 "spring-quartz 定时设置详细说明" 的详细解释。 一、Quartz 简介 Quartz 是一个开源的作业调度框架,可以用来创建、调度和执行任务。它支持复杂的调度策略,如按时间间隔执行、在特定日期执行等。Quartz ...
**Spring Quartz时间调用框架详解** Spring Quartz是一个在Spring框架中集成的时间调度插件,它允许开发者方便地创建和管理定时任务。Quartz是Java领域的一款功能强大的作业调度库,而Spring通过其优秀的IoC...
-- 设置JobDetail和Trigger --> <bean class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <!-- 指定Job类和执行方法 --> ...
### Java Spring 中 OpenSymphony 的 Quartz 定时器时间设置详解 #### 一、Spring定时器的两种实现方式概述 在Java Spring框架中,开发者有多种选择来实现定时任务的功能,其中最为流行的两种方式分别是使用Java...
在"quartz动态从数据库获取时间定时"的场景中,我们可以理解为Quartz的任务执行时间不是硬编码在程序中,而是从数据库中动态获取,这提供了更大的灵活性和可配置性。 首先,让我们来详细了解一下Quartz的核心概念:...
例如,如果你想每星期一的上午9点执行某个任务,可以创建一个`CalendarIntervalTrigger`,设置间隔为7天,并指定开始时间。 Cron表达式是一种强大的工具,可以定义非常灵活的调度规则。它由7个子表达式组成,分别...
例如,如果你使用的是JDBCJobStore,你需要在`org.quartz.jobStore.isClustered`属性设置为`true`,开启集群模式,并且在`org.quartz.jobStore.txIsolationLevelName`中指定事务隔离级别,如`READ_COMMITTED`或`...
根据需要定义 Trigger,如设置触发时间、重复频率等。例如,创建一个简单的触发器: ```java Date startTime = new Date(); SimpleTrigger trigger = (SimpleTrigger) TriggerBuilder.newTrigger() ....
正确设置并使用这些数据库表后,Quartz就可以在数据库中持久化作业和触发器的状态,即使应用程序重启,也能恢复之前设定的调度信息,实现任务的连续性和可靠性。 总之,"quartz quartz-1.8.6 dbTables" 提供了构建...
### quartz在Spring中的配置 #### 一、简介与基本配置 Quartz 是一款开源的任务调度框架,被广泛应用于 Java 应用程序中进行任务的定时调度。它支持复杂的触发规则,能够实现高度灵活的任务调度机制。Spring 框架...
Quartz提供了多种错误处理策略,如重试、跳过、记录日志等,可依据业务需求进行设置。 9. 性能优化: 调整Quartz配置以优化性能,如减少不必要的内存占用、调整线程池大小等。同时,合理设计CronTrigger或...
### quartz时间配置规则详解 #### 一、引言 Quartz 是一款开源的作业调度框架,它可以被应用在 Java 应用程序中实现对任务的定时执行。在 Quartz 中,触发器(Trigger)用于控制作业(Job)何时执行。本文档主要...