cron表达式格式、7个域及符号使用

一. cron表达式格式

cron表达式格式为7个域, 如:

秒 分 时 日 月 周 年

每一个域之间空格隔开, 不指定"年"域时, 年域可省略不写, 如:

 秒 分 时 日 月 周

二. cron表达式7个域代表 

字段名                 允许的值                        允许的特殊字符  
秒                     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                 , - * /

 ***注意***: 在"周"域中, 使用数值表示时, 7表示周六, 1表示周日

三. 符号使用说明

 所有域可使用: ","  "-"  "*"  "/"

, 表示x和y
- 表示x到y
* 表示每time
/ 表示从x起, 没隔y

"日"域另有"?"  "L"  "W"  "C"

? 表示不指定"日"域的值。规则是指定"周"域, 则"日"域必须为"?"。反之, 指定"日"域, 则"周"域必须为"?"。
  如: 0 0 12 ? * MON 或 0 0 12 1 * ?


L 2种写法: 
         一, 表示月末几天, 如2L, 表示月末的2天
         二, 表示月末倒数第几天, 如L-3, 表示月末倒数第3天

W 表示临近某日的工作日, 如15W, 表示最接近15号的工作日, 可能是15号(刚好是工作日)、15号前(刚好周六) 
  或 15号后(刚好周日)

C 表示和Calendar(日历)计划关联的值, 如1C表示, 1日或1日后包括的Calendar(日历)的第一天

LW L和W的组合, 只能出现在"日"域中, 表示某日最后一个工作日, 不一定是周五(详情见结尾ps)

 "周"域另有"?"  "L"  "#"  "C"

? 表示不指定"周"域。规则是知道"日"域值, 则"周"域值必须为"?"。反之, 则"日"域中必须为"?"。
 如: 0 0 12 1 * ? 或 0 0 12 ? * MON

L 表示某月的最后一个周几, 如1L, 表示某月的最后一个周日(1表示周日), 7L, 表示某月的最后一个周六(7表 
  示周六)

# 只能出现在"周"域中, 表示第几个周几, x#y, y表示第几个, x表示周的值, 
  如6#2, 表示第二个周五(6表示周五)

C 表示和Calendar(日历)计划关联的值, 如1C表示, 周日或周日后包括的Calendar(日历)的第一天

***注意***

"日"域中, L和W组合时为"LW"时, 网上有很多种定义, 如:

说法1: LW表示某月最后一个工作日
说法2: LW表示某月最后一周的最后一个工作日, 即周五

四. 子表达式范围 

1.Seconds 秒: (0~59)
2.Minutes 分: (0~59)
3.Hours 时:   (0~23)
4.Day-of-Month天:  (1~31,但是要注意有些月份没有31天)
5.Month 月:        (0~11,或者"JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV,DEC")
6.Day-of-Week周:   (1~7,1=SUN 或者"SUN, MON, TUE, WED, THU, FRI, SAT”)
7.Year年:          (1970~2099)

你可能感兴趣的:(cron,java,开发语言)