定义每天 8:00 9:10 10:20 11:30触发的cron表达式的问题

我现在要定义一个cron表达式,用户可以指定cron表达式的触发时间,例如用户可以指定调度在每天的 8:00 9:10 10:20 11:30等这些时间段触发一个事件,有高手能够告诉我这样的cron表达式该怎么写么?

你的情况看起来只能分开写了

8:00 9:10 10:20 11:30

0 8 * * * /usr/bin/calendar
10 9 * * * /usr/bin/calendar
20 10 * * * /usr/bin/calendar
30 11 * * * /usr/bin/calendar

33 4 5 6 1 php /home/youraccount/public_html/cron.php

第一个数字33时分钟数,
第二个数字4是小时数,
第三哥数字5是每月第几天
第四个数字6是第几个月
第五个数字1是星期一

每个位置可以用多个数字,中间用逗号隔开,也可以用*来表示任意数字

几个例子:
32 * * * * 每个小时的第32分钟运行
12,42 * * * * 每个小时的第12和第42分钟运行。
*/15 */2 * * * 在下面时间运行: 0:00, 0:15, 0:30, 0:45, 2:00, 2:15, 2:30, ...
43 18 * * 7: 每个星期天的18:43分运行

参考http://www.ibm.com/developerworks/cn/linux/l-job-scheduling.html

如果使用quartz的话,好像选项更多。。cron的话,写4条也不是什么复杂的事情

0 0/70 8,11 * * ?

quartz好像可以这么弄

忘了不知支持不支持超过59的分钟数了。。没有办法的话,也只能写多几个了

这个功能很简单,用户由界面上输入或选择几点几点并提交表单--》你在后台生成用户输入时间对应的corn--》把表单时存起来(可以存入数据库)--》通过程序更新你的trigger对象(quartz),其中动态跟新trigger可以这么来做:
[code="java"]
public void execute(JobExecutionContext arg0) throws JobExecutionException {

Scheduler sched= null;

try {

sched = StdSchedulerFactory.getDefaultScheduler();

} catch (SchedulerException e) {

e.printStackTrace();

}

     JobDetail jd = arg0.getJobDetail();  
     CronTrigger tt = (CronTrigger)arg0.getTrigger();  
     String exp = tt.getCronExpression();  

     String ns = "0/15 * * * * ?"; //根据用户输入动态拼凑 

     try {             
         tt.setCronExpression(ns);//这里更新trigger对象持有的cron表达式         
         sched.rescheduleJob(tt.getName(),"DEFAULT",tt);//刷新调度器  

         System.out.println("cron表达式重置完毕");  
     } catch (Exception e) {  
         e.printStackTrace();  
     }  

[/code]