package com.sky.ioc.tool;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 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 SUNDAY = "ss mm HH ? * 1";
    private static final String MONDAY = "ss mm HH ? * 2";
    private static final String TUESDAY = "ss mm HH ? * 3";
    private static final String WEDNESDAY = "ss mm HH ? * 4";
    private static final String THURSDAY = "ss mm HH ? * 5";
    private static final String FRIDAY = "ss mm HH ? * 6";
    private static final String SATURADY = "ss mm HH ? * 7";

    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;
    }
    /**
     * 时间转换时间表达式
     */
    public static String getCron(Date date, String dateFormat) {
        return formatDateByPattern(date, dateFormat);
    }

    public static void main(String[] args)throws Exception{
        String cron = getCron(new Date(), SUNDAY);
        System.out.println("每周六执行"+cron);

        String cron1 = getCron(new Date("2020/04/06 14:10:00"), DATEFORMAT_EVERYDAY);
        System.out.println("每天执行"+cron1);

        String cron2 = getCron(new Date(), DATEFORMAT_YEAR);
        System.out.println("执行一次"+cron2);

    }
}
