Java中CornExpression说明

发布时间 2023-09-27 11:23:53作者: ymworkroom
关于cronExpression表达式有至少6个(也可能是7个)由空格分隔的时间元素,从左至右,这些元素约定义如下:
1、秒(0~59)
2、分(0~59)
3、小时(0~23)
4、月份中的日期(1-31)
5、月份(1-12或JAN-DEC)
6、星期中的日期(1-7或SUN-SAT)
7、年份(1970-2099)
eg:
0 0 10,14,16 * * ?
每天10点、14点、16点
0 0 15,30,45 * 1-10 * ?
每月前10天每隔15分钟
30 0 0 1 1 ? 2012
在2012年1月1日午夜过30秒时
各个时间可用值如下:
秒 0-59,-*/
分 0-59,-*/
小时 0-23,-*/
日 1-31,-*?/LWC
月 1-12orJAN-DEC,-*/
周几 1-7 or SUN-SAT,-*?/LC#
年(可选字段)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秒开始,每个字段都有一系列可以开始或结束的数值.
"L"——字符可用在”日“和”周几“这两个字段,它是"last"的缩写,但是在这两个字段中有不同的含义。“日”字段中的“L”表示“一个月中的最后一天”,
对于月就是31号,对于二月(非闰年)就是28号。“周几”字段中,它简单的表示“7”或者“SAT”。
但如果在“周几”字段中使用时跟在某个数字之后,它表示“该月最后一个星期x",例如“6L”表示该月最后一个周五“。
“W”——可用于日字段,用来确认给定日期最近的工作日(周一到周五)。比如将”日“字段设置为”15W“,表示离该月15号最近的工作日,因此如果15号
为周六,触发器会在14号即周五调用。如果15号为周日,触发器会在16号也就是下周一触发,如果15号为周二,那么当天就会触发。如果”日“
字段设置为”1W“,而1号是周六,则会下周一即当月的3号触发,它不会越过当月的值的范围边界。”W“字符只能用于”日“字段的值为单独的一天,
而不是一系列值的时候,”L“和”W“可以组合用于”日“字段,表示为”LW“,表示”该月最后一个工作日”。
“#”——字符可用于“周几”字段,该字符表示“该月第几个周x"。比如“6#3”表示该月第三个周五(6表示周五,而“#3”表示该月第3个)。再比如“2#1”,
表示该月第一个周一,而“4#5”表示该月第五个周三。
“C"——字符可用于”日“和”周几“字段,它是”calendar"的缩写,它表示为基于相关的日历所计算出的值(如果有),如果没有关联的日历,那它等同于
包含全部日历。

  (1)0/2 * * * * ?   表示每2秒 执行任务

  (1)0 0/2 * * * ?    表示每2分钟 执行任务

  (1)0 0 2 1 * ?   表示在每月的1日的凌晨2点调整任务

  (2)0 15 10 ? * MON-FRI   表示周一到周五每天上午10:15执行作业

  (3)0 15 10 ? 6L 2002-2006   表示2002-2006年的每个月的最后一个星期五上午10:15执行作

  (4)0 0 10,14,16 * * ?   每天上午10点,下午2点,4点 

  (5)0 0/30 9-17 * * ?   朝九晚五工作时间内每半小时 

  (6)0 0 12 ? * WED    表示每个星期三中午12点 

  (7)0 0 12 * * ?   每天中午12点触发 

  (8)0 15 10 ? * *    每天上午10:15触发 

  (9)0 15 10 * * ?     每天上午10:15触发 

  (10)0 15 10 * * ?    每天上午10:15触发 

  (11)0 15 10 * * ? 2005    2005年的每天上午10:15触发 

  (12)0 * 14 * * ?     在每天下午2点到下午2:59期间的每1分钟触发 

  (13)0 0/5 14 * * ?    在每天下午2点到下午2:55期间的每5分钟触发 

  (14)0 0/5 14,18 * * ?     在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发 

  (15)0 0-5 14 * * ?    在每天下午2点到下午2:05期间的每1分钟触发 

  (16)0 10,44 14 ? 3 WED    每年三月的星期三的下午2:10和2:44触发 

  (17)0 15 10 ? * MON-FRI    周一至周五的上午10:15触发 

  (18)0 15 10 15 * ?    每月15日上午10:15触发 

  (19)0 15 10 L * ?    每月最后一日的上午10:15触发 

  (20)0 15 10 ? * 6L    每月的最后一个星期五上午10:15触发 

  (21)0 15 10 ? * 6L 2002-2005   2002年至2005年的每月的最后一个星期五上午10:15触发 

  (22)0 15 10 ? * 6#3   每月的第三个星期五上午10:15触发