1、上代码
1 /**
2 * @ClassName: CronUtil
3 * @Description: Cron表达式工具类 目前支持三种常用的cron表达式 1.每天的某个时间点执行 例:12 12 12 * *
4 * ?表示每天12时12分12秒执行 2.每周的哪几天执行 例:12 12 12 ? * 1,2,3表示每周的周1周2周3
5 * ,12时12分12秒执行 3.每月的哪几天执行 例:12 12 12 1,21,13 * ?表示每月的1号21号13号
6 * 12时12分12秒执行
7 * @author
8 * @date
9 *
10 */
11 public class CronUtil {
12
13 /**
14 *
15 * 方法摘要:构建Cron表达式
16 *
17 * @param rate 频率 0秒;1分;2小时;3日;4月
18 * @param cycle 周期
19 * @return String
20 */
21 public static String createLoopCronExpression(int rate, int cycle) {
22 String cron = "";
23 switch (rate) {
24 case 0:// 每cycle秒执行一次
25 cron = "0/" + cycle + " * * * * ?";
26 break;
27 case 1:// 每cycle分钟执行一次
28 cron = "0 0/" + cycle + " * * * ?";
29 break;
30 case 2:// 每cycle小时执行一次
31 cron = "0 0 0/" + cycle + " * * ?";
32 break;
33 case 3:// 每cycle天的0点执行一次
34 cron = "0 0 0 1/" + cycle + " * ?";
35 break;
36 case 4:// 每cycle月的1号0点执行一次
37 cron = "0 0 0 1 1/" + cycle + " ? ";
38 break;
39 case 5:// 每天cycle点执行一次
40 cron = "0 0 " + cycle+ " * * ?";
41 break;
42 default:// 默认每cycle秒执行一次
43 cron = "0/1 * * * * ?";
44 break;
45 }
46 return cron;
47 }
48
49 /**
50 *
51 * 方法摘要:构建Cron描述
52 *
53 * @param rate 频率 0秒;1分;2小时;3日;4月
54 * @param cycle 周期
55 * @return String
56 */
57 public static String createLoopCronDescription(int rate, int cycle) {
58 String desc = "";
59 switch (rate) {
60 case 0:// 每cycle秒执行一次
61 desc = "每隔" + cycle + "秒触发一次任务";
62 break;
63 case 1:// 每cycle分钟执行一次
64 desc = "每隔" + cycle + "分钟触发一次任务";
65 break;
66 case 2:// 每cycle小时执行一次
67 desc = "每隔" + cycle + "小时触发一次任务";
68 break;
69 case 3:// 每cycle天的0点执行一次
70 desc = "每隔" + cycle + "天的0点触发一次任务";
71 break;
72 case 4:// 每cycle月的1号0点执行一次
73 desc = "每隔" + cycle + "月的1日0点触发一次任务";
74 break;
75 case 5:// 每天cycle点执行一次
76 desc = "每天" + cycle + "点执行一次任务";
77 break;
78 default:// 默认每cycle秒执行一次
79 desc = "每隔" + cycle + "秒触发一次任务";
80 break;
81 }
82 return desc;
83 }
84
85 // 参考例子
86 public static void main(String[] args) {
87
88 System.out.println(CronUtil.createLoopCronExpression(5, 1));
89 System.out.println(CronUtil.createLoopCronDescription(5, 1));
90 // 执行时间:每天的12时12分12秒 end
91
92 }
93 }