如何将cron表达式转换为日期或时间

时间:2016-02-09 15:07:38

标签: java cron

我正在尝试将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

2 个答案:

答案 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);