我正在尝试将cron表达式转换为日期。
例如,这是0 0 23 1 1-12 ?
表达式。我想转换为相应的日期。
我如何实现这一目标?
这是我尝试过的,但它只是给出了描述,人类可读,但我想要实现正确的日期格式。
import java.text.ParseException;
import java.util.Date;
import org.quartz.CronExpression;
public class CRON {
public static void main(String args[]) throws ParseException
{
//AutoRegistrationJobDao obj=new AutoRegistrationJobDao();
//obj.updateLastAutoRegSchdl();
String cron ="0 0 23 1 1-12 ?";
System.out.println("cron :"+cron);
CronExpression cronExpression =new CronExpression("0 0 23 1 1-12 ?");
System.out.println(cronExpression.getExpressionSummary());
System.out.println(cronExpression.getFinalFireTime());
//System.out.println(cronExpression.getNextValidTimeAfter(date));
try {
CronExpression c =new CronExpression(cron);
Date date=c.getFinalFireTime();
System.out.println(date);
System.out.println(c.getFinalFireTime());
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
seconds: 0
minutes: 0
hours: 23
daysOfMonth: 1
months: 1,2,3,4,5,6,7,8,9,10,11,12
daysOfWeek: ?
lastdayOfWeek: false
nearestWeekday: false
NthDayOfWeek: 0
lastdayOfMonth: false
答案 0 :(得分:0)
* / 20 * * * *命令 - >这将在20分钟内执行一次。这不能映射到单个时间点。
给定一个cron表达式 - 当作业被触发时,会有多个实例。所以你不能指望一对一映射b / w cron和一个日期实例。
如果您有日期参考,您可以从参考日期算出下一个作业触发时间等。
答案 1 :(得分:0)
请检查这一项是否有效!!
import org.springframework.scheduling.support.CronSequenceGenerator;
import java.util.Date;
CronSequenceGenerator generator = new CronSequenceGenerator("0 0 23 * * ?");
Date nextRunDate= generator.next(new Date());
System.out.println("Date:: " + nextRunDate);