<!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 680460288 22 0 262145 0;} @font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-charset:1; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:0 0 0 0 0 0;} @font-face {font-family:Tahoma; panose-1:2 11 6 4 3 5 4 4 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:-520081665 -1073717157 41 0 66047 0;} @font-face {font-family:"/@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 680460288 22 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; font-family:"Times New Roman","serif"; mso-fareast-font-family:宋体; mso-font-kerning:1.0pt;} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; mso-ascii-font-family:"Times New Roman"; mso-fareast-font-family:宋体; mso-hansi-font-family:"Times New Roman";} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} -->
一个 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 触发
------------------------------------------------------------------------------------------