java生成Cron表达式
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 }