石英调度翻译

**石英调度介绍**

cron是UNIX系统中很早就有的工具,据证明,它的任务调度很强大。

CronTrigger 这个类就是基于cron的调度能力出现的。它使用"cron表达式"来创建调度任务,比如,“周一至周五的每个早上八点”、“每个月的最后一个周五的凌晨一点半”。

Cron表达式虽然很强大,但是也相当令人困惑,这篇教程旨在揭开部分Cron表达式的面纱,提供用户一个可以查看的资源,而不用去泡论坛或者翻邮件列表。

**格式**

Cron表达式是一个由6或7个、由空格隔开的列组成的字符串,这些列可以包含任意允许的字符,这些允许的字符也可以组合使用。这些可使用的列如下:


Field Name(列名)

Mandatory(是否强制)

Allowed Values(允许值)

Allowed Special Characters(可允许的特殊字符)

Seconds(秒)

YES(必选)

0-59

, - * /

Minutes(分)

YES(必选)

0-59

, - * /

Hours(时)

YES(必选)

0-23

, - * /

Day of month(日)

YES(必选)

1-31

, - * ? / L W

Month(月)

YES(必选)

1-12 或者 JAN-DEC

, - * /

Day of week(星期几)

YES(必选)

1-7 或者 SUN-SAT

, - * ? / L #

Year(年)

NO(可选)

empty, 1970-2099

, - * /


所以Cron 表达式可以这样简单:* * * * ? *

 * ("所有值")-选择一个列中可选择的所有值,比如,对于 “分”这列, *  表示 每一分钟;


 ? ("非具体值")-当你需要指定两列中的其中一列值(而不是另一列值)时有用!举例来讲,如果我想要触发器在每个月的固定一天(比如第10天)触发,

但是不管触发那天是星期几。这样的话,我就在 “日”那列填入 “10”,而在“星期几”那列填入“?”,具体可以看下面说明;


-(一个英文键盘状态下的中线)-用来表示区间,比如“时”这列的10-12等同于10点,11点,12点;


   ,(一个英文键盘状态下的逗号) - 表示还有其它的值,比如“星期几”这列中的“MON,WED,FRI”表示星期一、星期二和星期三;


/(表示増量)-比如“秒”这列中的“0/15”表示第0秒、第15秒、第30秒和第45秒,而"5/15"表示第5秒、第20秒,第35秒和第50秒。

你也可以不标明“/”前的数字,这种情况下默认“/”前为数字0。在“日” 这列,'1/3'表示从月的第一天开始 ,第3天触发一次;


L ("最后一个")- 它在不同的列中有不同的意义。比如在“日“这列中它表示最后一天,即1月中的31号,2月中的28号(平年)等等,在星期几

这列中表示 7或者SAT(星期六)。但是需要注意的是,如果"L"前面还有数字,这就表示”月的最后一个星期几,“比如"6L"表示"月的最后一个星期五",

当使用"L"的时候,记得不要列表或者区间,这会使结果混淆;


W ("工作日")-用来指明距离给定日期最近的一个工作日(周一至周五)。比如,在“日”这列"15W"表示 离15号最近的那个工作日,

所以15号是星期六,那么触发器会在14号(周五)触发,如果15号是周日,那么 触发器会在16号(周一)触发,如果15号是星期二,

那么触发器就会在15号(周二)触发。然而,如果把值设为"1W",而1号是星期六,那么触发器会在3号(周一)触发。同样,不要引起混淆。

在 "日"这列中“L”和“W”可以一起使用,即“LW”,表示 月的最后一个工作日;

# - 用来指定“第几个xx”,比如,在“星期几”这列中"6#3" 表示这个月的第3个周五(6 =星期五,而 "#3" = 这个月的第3个),其它例子,

“2#1”-这个月的第1个星期一, "4#5"-这个月的第5个周三。需要注意的是:如果你使用“#5”而没有第5个,那么触发器不会触发了。

最后,允许的字符大小写不敏感,所以MON和mon是一样的啦!


样例:

Expression

Meaning

0 0 12 * * ?

每天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 * * ?

每天14点到15点之间触发

0 0/5 14 * * ?

每天14点到15点之间,每隔5分钟触发

0 0/5 14,18 * * ?

每天14点到15点之间、18到19点之间,每隔5分钟触发

0 0-5 14 * * ?

Fire every minute starting at 2pm and ending at 2:05pm, every day

每天14点到14点零5分之间每分钟触发

0 10,44 14 ? 3 WED

Fire at 2:10pm and at 2:44pm every Wednesday in the month of March.

3月份的每个星期三的14点10分和14点44分触发

0 15 10 ? * MON-FRI

Fire at 10:15am every Monday, Tuesday, Wednesday, Thursday and Friday

每个工作日(周一至周五)的上午10:15分触发

0 15 10 15 * ?

Fire at 10:15am on the 15th day of every month

每月15号的上午10点15分触发

0 15 10 L * ?

Fire at 10:15am on the last day of every month

每月最后一天的上午10点15分触发

0 15 10 ? * 6L

Fire at 10:15am on the last Friday of every month

每月的最后一个星期五的上午10点15分触发


对cron还有什么问题吗?

0 15 10 ? * 6L 2002-2005

Fire at 10:15am on every last friday of every month during the years 2002, 2003, 2004 and 2005

2002至2005年的每月的最后一个星期五的上午10点15分触发

0 15 10 ? * 6#3

Fire at 10:15am on the third Friday of every month

每月第3个星期五的上午10点15分触发

0 0 12 1/5 * ?

Fire at 12pm (noon) every 5 days every month, starting on the first day of the month.

从每月的1号开始,每隔5天,在中午12点整触发

0 11 11 11 11 ?

Fire every November 11th at 11:11am.

每个11月11号上午11点11分触发


注意 “?”和“*”在“星期几”和 “日”这两列的效果!

而且"?"在它们之间的使用是互斥的,只能使用一个。

留下最后一句,让大家自己翻译吧!

   Be careful when setting firetimes between mid-night and 1:00 AM - "daylight savings" can cause askip or a repeat depending on whether the time moves back or jumps forward.



1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值