java 判断当前时间符合cron时间表达式



public class OrderExceptionQuartz {

    private static Logger logger = LoggerFactory.getLogger(OrderExceptionQuartz.class);
    /**
     * 校验在当前时间是否满足cron时间规则表达式
     * @param cron
     * @param format
     * @return
     * @throws ParseException
     */
    private static Boolean filterWithCronTime(String cron, String format) throws ParseException {
        if (StringUtils.isBlank(cron) || StringUtils.isBlank(format)){
            return false;
        }
        CronExpression exp = new CronExpression(cron);
        Boolean inCron = exp.isSatisfiedBy(DateUtils.dateStrToDate(DateUtils.formatCurrentDate(format), format)) ;
        return inCron;
    }

    public static void main(String[] args) throws ParseException {
        String cron = "0 0 10,11,15 * * ? ";
        System.out.println(filterWithCronTime(cron, "HH"));//true,我当前时间为15:36,
        System.out.println(filterWithCronTime(cron, "HHmm"));//false,我当前时间为15:36,
    }

}


转载于:https://my.oschina.net/luyaolove/blog/645261

好的,根据您的问题,我可以给出一个参考答案。 Java中可以使用Quartz Cron表达式生成器来生成Cron表达式。下面是一个示例代码: ```java import org.quartz.CronExpression; import java.util.Calendar; import java.util.Date; public class CronExpressionGenerator { public static void main(String[] args) { // 生成当前时间3分钟后的Cron表达式 String cronExpression = generateCronExpression(3); System.out.println(cronExpression); // 输出:0 3/3 * 1/1 * ? * } /** * 根据给定的时间间隔生成Cron表达式 * @param interval 时间间隔,单位为分钟 * @return Cron表达式 */ public static String generateCronExpression(int interval) { // 获取当前时间 Calendar calendar = Calendar.getInstance(); Date now = calendar.getTime(); // 计算目标时间 calendar.add(Calendar.MINUTE, interval); Date target = calendar.getTime(); // 计算Cron表达式 String timeExpression = String.format("%02d %02d %02d %02d %02d ? %04d", target.getSeconds(), target.getMinutes(), target.getHours(), target.getDate(), target.getMonth() + 1, target.getYear() + 1900); // 将时间表达式转换为CronExpression对象 CronExpression cronExpression = null; try { cronExpression = new CronExpression(timeExpression); } catch (Exception e) { e.printStackTrace(); } // 根据CronExpression对象生成Cron表达式 return cronExpression == null ? null : cronExpression.getCronExpression(); } } ``` 以上代码中,我们先获取当前时间,然后根据时间间隔计算出目标时间,再将目标时间转换为时间表达式,最后将时间表达式转换为Cron表达式。需要注意的是,时间表达式的格式为 "ss mm HH dd MM ? yyyy",而Cron表达式的格式为 "秒 分 时 日 月 周年",其中周年可以省略。 以上代码只是一个简单示例,您可以根据自己的需求进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值