java日期转cron表达式工具类

今天准备写数据库备份定时任务,但是发现很多都是直接填写时间表达式子的,那么对于不懂时间表达式的,就比较麻烦,所以要是只传时间就能转换成cron表达式就美滋滋了,所以它来了。

/**
 * @author Lxq
 * @version 1.0
 * @date 2020/9/11 9:48
 * java日期转cron表达式工具类
 */
public class CronUtils {

    /**
     * 每年时间format格式
     */
    private static final String DATEFORMAT_YEAR = "ss mm HH dd MM ? yyyy";

    /**
     * 每天时间format格式
     */
    private static final String DATEFORMAT_EVERYDAY = "ss mm HH * * ?";

    /**
     * 每周时间format格式
     */
    private static final String DATEFORMAT_SUN = "ss mm HH ? * 1";
    private static final String DATEFORMAT_MON = "ss mm HH ? * 2";
    private static final String DATEFORMAT_TUE = "ss mm HH ? * 3";
    private static final String DATEFORMAT_WED = "ss mm HH ? * 4";
    private static final String DATEFORMAT_THU = "ss mm HH ? * 5";
    private static final String DATEFORMAT_FRI = "ss mm HH ? * 6";
    private static final String DATEFORMAT_SAT = "ss mm HH ? * 7";


    /***
     *
     * @param date
     * @param dateFormat : e.g:yyyy-MM-dd HH:mm:ss
     * @return
     */
    public static String formatDateByPattern(Date date, String dateFormat) {
        SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
        String formatTimeStr = null;
        if (date != null) {
            formatTimeStr = sdf.format(date);
        }
        return formatTimeStr;
    }


    /**
     * 时间转换时间表达式
     * convert Date to cron ,eg.  "0 06 10 15 1 ? 2020"
     *
     * @param date       : 时间点
     * @param dateFormat
     * @return
     */
    public static String getCron(Date date, String dateFormat) {
        return formatDateByPattern(date, dateFormat);
    }

    /**
     * 时间字符串转换时间表达式
     *
     * @param date       HH:mm:ss
     * @param dateFormat
     * @return
     */
    public static String getCron(String date, String dateFormat) {
        Date parse = DateUtil.parse(date, "HH:mm:ss");
        return formatDateByPattern(parse, dateFormat);
    }

    /**
     * 时间字符串转时间表达式(年)
     *
     * @param date
     * @param dateFormat
     * @return
     */
    public static String getCronByYear(String date, String dateFormat) {
        Date parse = DateUtil.parse(date, "yyyy-MM-dd HH:mm:ss");
        return formatDateByPattern(parse, dateFormat);
    }


    public static void main(String[] args) {
        String cron = getCron(new Date(), DATEFORMAT_TUE);
        System.out.println(cron);

        String cron1 = getCron(new Date(), DATEFORMAT_EVERYDAY);
        System.out.println(cron1);

        String cron2 = getCron(new Date(), DATEFORMAT_YEAR);
        System.out.println(cron2);

        String cron4 = getCron("12:12:12", DATEFORMAT_EVERYDAY);
        System.out.println(cron4);

        String cron5 = getCronByYear("2020-9-11 12:12:12", DATEFORMAT_YEAR);
        System.out.println(cron5);
    }
}

31 19 11 ? * 3
31 19 11 * * ?
31 19 11 11 09 ? 2020
12 12 12 * * ?
12 12 12 11 09 ? 2020

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值