java生成Cron表达式

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 }
(0)

相关推荐