cron表达式转换为时间格式

cron表达式转换为时间格式。
说明:代码是基于当天零点,生成今天的所有的cron表达式对应的时间。
废话不说,上代码(大神勿喷)。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import org.quartz.CronExpression;


public class CronExpParser {

    /**
     * @方法名:parser
     * @方法描述【cron表达式装换成时间格式】
     * @param cronExpression   cron表达式
     * @return
     * @修改描述【修改描述】
     * @版本:1.0
     * @创建人:Administrator
     * @创建时间:2018年8月17日 下午2:46:43
     * @修改人:Administrator
     * @修改时间:2018年8月17日 下午2:46:43
     */
    public static List<String> parser(String cronExpression) {
        List<String> result = new ArrayList<String>();
        if (cronExpression == null || cronExpression.length() < 1) {
            return result;
        } else {
            CronExpression exp = null;
            try {
                exp = new CronExpression(cronExpression);
            } catch (ParseException e) {
                e.printStackTrace();
                return result;
            }
            Calendar calendar = Calendar.getInstance();
            String cronDate = calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-" + calendar.get(Calendar.DATE);
            String sStart = cronDate + " 00:00:00";
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date dStart = null;
            Date dEnd = null;
            try {
                dStart = sdf.parse(sStart);
                calendar.setTime(dStart);
                calendar.add(Calendar.DATE, 1);
                dEnd = calendar.getTime();
            } catch (ParseException e) {
                e.printStackTrace();
            }
            Date dd = new Date();
            dd = exp.getNextValidTimeAfter(dd);
            while (dd.getTime() < dEnd.getTime()) {
                result.add(sdf.format(dd));
                dd = exp.getNextValidTimeAfter(dd);
            }
            exp = null;
        }
        return result;
    }

    public static void main(String[] args) {
        String CRON_EXPRESSION = "0/30 * * * * ? *";
        System.out.println(CRON_EXPRESSION);
        List<String> lTime = new ArrayList<String>();
        lTime = CronExpParser.parser(CRON_EXPRESSION);
        for (int i = 0; i < lTime.size(); i++) {
            System.out.println(lTime.get(i));
        }

    }
}

欢迎转载。

猜你喜欢

转载自blog.csdn.net/qq710703736/article/details/81777664
今日推荐