gpt4 book ai didi

java.lang.RuntimeException : CronExpression '4 27 11 ? 8 ? 2014' is invalid, 错误

转载 作者:行者123 更新时间:2023-11-30 08:20:43 25 4
gpt4 key购买 nike

将其作为无效的 CronExpression,无法弄清楚原因

推荐http://www.quartz-scheduler.org/documentation/quartz-1.x/tutorials/crontrigger

这就是我生成 Cron 表达式的方式:

public class sample {

/**
* @param args
*/
public static void main(String[] args) {
Date date = new Date();
String formatted_date = generateCronExpression(Integer.toString(date.getSeconds()),Integer.toString(date.getMinutes()),
Integer.toString(date.getHours()), "?", Integer.toString(date.getMonth()), "?", Integer.toString(date.getYear()+1900));

}
private static String generateCronExpression(final String seconds,final String minutes, final String hours, final String dayOfMonth, final String month, final String dayOfWeek, final String year) {
return String.format("%1$s %2$s %3$s %4$s %5$s %6$s %7$s", seconds,minutes, hours, dayOfMonth, month, dayOfWeek, year);
}
}

最佳答案

'?'在 cron 表达式中是为了让日期和星期几不相互干扰(例如,所以你可以指定一个 cron 在任何星期五触发,而不管这个月的第几天或第 13 天每个月的日期,无论今天是哪一天)。如果您将它们都指定为“?”您没有任何日期说明,这是非法的。

当前日期的 cron 表达式将使用月份中的第几天,而忽略星期几。例如,对于今天,2014 年 9 月 15 日,您将指定 4 27 11 15 9 ? 2014.

这可以通过从 java Date 对象中提取当前日期来生成:

public static void main(String[] args) {
Date date = new Date();
String formatted_date = generateCronExpression
(Integer.toString(date.getSeconds()),
Integer.toString(date.getMinutes()),
Integer.toString(date.getHours()),
Integer.toString(date.getDate()),
Integer.toString(date.getMonth() + 1), // see Note #2
"?",
Integer.toString(date.getYear() + 1900));
}

注意事项:

  1. Date.getDate()Date.getHours() 等已弃用 - 您应该改用 Calendar.get。我保留了 OP 中的当前代码,以使解决方案清晰明了,而不是通过额外的细节来增加困惑。
  2. Date.getMonth()(以及推荐的新方法 Calendar.get(Calendar.MONTH))返回从零开始的月份表示(例如,一月是 0,二月是 1,等等),而 cron 表达式是基于一的(例如,一月是 1,二月是 2,等等)- 因此您应该为 cron 表达式添加 1。

关于java.lang.RuntimeException : CronExpression '4 27 11 ? 8 ? 2014' is invalid, 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25841697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com