CronTrigger表达式时间字段
位置 | 时间域名 | 允许值 | 允许的特殊字符 |
1 | 秒 | 0-59 | ,-*/ |
2 | 分钟 | 0-59 | ,-*/ |
3 | 小时 | 0-23 | ,-*/ |
4 | 日期 | 1-31 | ,-*?/L W C |
5 | 月份 | 1-12 | ,-*/ |
6 | 星期 | 1-7 | ,-*?/L C # |
7 | 年(可选) | 空值 1970-2099 | ,-*/ |
实例:
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class SimpleJob implements Job {
@Override
public void execute(JobExecutionContext jobCtx)
throws JobExecutionException {
System.out.println(jobCtx.getTrigger().getName() + " triggered.time.is:" + (new Date()));
}
}
import org.quartz.CronExpression;
import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.impl.StdSchedulerFactory;
public class CronTriggerRunner {
public static void main(String[] args) {
try {
//创建一个JobDdtail实例,指定SimpleJob,组名为jgroup1,名称为job1_2
JobDetail jobDetail = new JobDetail("job1_2", "jgroup1", SimpleJob.class);
//创建CronTrigger,指定组及名称
CronTrigger cronTrigger = new CronTrigger("trigger1_2", "tgroup1");
//定义Cron表达式,每隔5秒运行一次
CronExpression cexp = new CronExpression("0/5 * * * * ?");
cronTrigger.setCronExpression(cexp);
//通过SchedulerFactory获取一个调度器实例
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler();
//注册并进行调度
scheduler.scheduleJob(jobDetail, cronTrigger);
//调度开始
scheduler.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行结果:
trigger1_2 triggered.time.is:Wed Apr 17 16:44:50 CST 2013
trigger1_2 triggered.time.is:Wed Apr 17 16:44:55 CST 2013
trigger1_2 triggered.time.is:Wed Apr 17 16:45:00 CST 2013
trigger1_2 triggered.time.is:Wed Apr 17 16:45:05 CST 2013
默认情况下Cron表达式对应当前的时区,可以通过CronTriggerRunner的setTimeZone(java.util.TimeZone timeZone)方法显式指定时区。用户也可以通过setStartTime(java.util.Date startTime)和setEndTime(java.util.Date endTime)指定开始和结束的时间