Java版本--------好用的corn表达式转换工具类

/**
 * @ClassName: CronUtil
 * @Description: Cron 表达式工具类 目前支持三种常用的 cron 表达式 1. 每天的某个时间点执行 例:12 12 12 * *
 *               ? 表示每天 12 时 12 分 12 秒执行 2. 每周的哪几天执行 例:12 12 12 ? * 1,2,3 表示每周的周 1 周 2 周 3
 *               ,12 时 12 分 12 秒执行 3. 每月的哪几天执行 例:12 12 12 1,21,13 * ? 表示每月的 1 号 21 号 13 号
 *               12 时 12 分 12 秒执行
 * @author
 * @date
 *
 */
public class CronUtil {

    /**
     *
     * 方法摘要:构建 Cron 表达式
     *
     * @param rate  频率 0 秒;1 分;2 小时;3 日;4 月
     * @param cycle 周期
     * @return String
     */
    public static String createLoopCronExpression(int rate, int cycle) {
        String cron = "";
        switch (rate) {
            case 0:// 每 cycle 秒执行一次
                cron = "0/" + cycle + " * * * * ?";
                break;
            case 1:// 每 cycle 分钟执行一次
                cron = "0 0/" + cycle + " * * * ?";
                break;
            case 2:// 每 cycle 小时执行一次
                cron = "0 0 0/" + cycle + " * * ?";
                break;
            case 3:// 每 cycle 天的 0 点执行一次
                cron = "0 0 0 1/" + cycle + " * ?";
                break;
            case 4:// 每 cycle 月的 10 点执行一次
                cron = "0 0 0 1 1/" + cycle + " ? ";
                break;
            case 5://  每天 cycle 点执行一次
                cron = "0 0 " + cycle+ "  * * ?";
                break;
            default:// 默认每 cycle 秒执行一次
                cron = "0/1 * * * * ?";
                break;
        }
        return cron;
    }

    /**
     *
     * 方法摘要:构建 Cron 描述
     *
     * @param rate  频率 0 秒;1 分;2 小时;3 日;4 月
     * @param cycle 周期
     * @return String
     */
    public static String createLoopCronDescription(int rate, int cycle) {
        String desc = "";
        switch (rate) {
            case 0:// 每 cycle 秒执行一次
                desc = "每隔" + cycle + "秒触发一次任务";
                break;
            case 1:// 每 cycle 分钟执行一次
                desc = "每隔" + cycle + "分钟触发一次任务";
                break;
            case 2:// 每 cycle 小时执行一次
                desc = "每隔" + cycle + "小时触发一次任务";
                break;
            case 3:// 每 cycle 天的 0 点执行一次   type 为1,执行
                desc = "每隔" + cycle + "天的 0 点触发一次任务";
                break;
            case 4:// 每 cycle 月的 10 点执行一次
                desc = "每隔" + cycle + "月的 1 日 0 点触发一次任务";
                break;
            case 5:// 每天 cycle 点执行一次
                desc = "每天" + cycle + "点执行一次任务";
                break;
            default:// 默认每 cycle 秒执行一次
                desc = "每隔" + cycle + "秒触发一次任务";
                break;
        }
        return desc;
    }

    // 参考例子
    public static void main(String[] args) {
        System.out.println("测试++++++++++++++++++++++++++++++++++++++++++++++++");
        System.out.println(CronUtil.createLoopCronExpression(3, 30));
        System.out.println(CronUtil.createLoopCronDescription(3, 30));
        System.out.println("测试++++++++++++++++++++++++++++++++++++++++++++++++");
        // 执行时间:每天的 12 时 12 分 12 秒 end
    }

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值