Quartz的cron 表达式,每隔两周的周一和周三如何表示
Quartz的cron 表达式,每隔两周的周一和周三怎么表示?
我使用spring + quartz 做定时任务处理,想实现每隔二个星期的周一和周三触发任务,这样一个cron 表达式怎么写?
我不清楚在第六位的Day-of-Week是否可以用数字.如果可以,那上面的就是正解.
我不清楚在第六位的Day-of-Week是否可以用数字.如果可以,那上面的就是正解.
在day_of_week中用 /2表示的是每隔二天而不是每隔2周,楼上所说的不行
看来只能这样了.
每周1,3执行. 执行前判断上次执行是否有两个星期间隔了.
#表示的是一个月份内的第几个星期,而我要求的是年度范围内的,就是一年52周,每几周的周几运行。
我现在用JobListener和 InInterruptableJob接口去实现,在listener 中判断当前时间的 week_of_year(一年内的第几个星期) 能否被 interval(星期的间隔) 整除,如果不能整除就跳过这次的job执行。
我不清楚在第六位的Day-of-Week是否可以用数字.如果可以,那上面的就是正解.
在day_of_week中用 /2表示的是每隔二天而不是每隔2周,楼上所说的不行
若真是如此, 改成14就是2周了,何必太拘泥.
另,week这个位置是可以用数字的,1表示sun,类推.
不过我的确没有实作进行测试,对不起.
可以用14??????????
我不清楚在第六位的Day-of-Week是否可以用数字.如果可以,那上面的就是正解.
在day_of_week中用 /2表示的是每隔二天而不是每隔2周,楼上所说的不行
若真是如此, 改成14就是2周了,何必太拘泥.
另,week这个位置是可以用数字的,1表示sun,类推.
不过我的确没有实作进行测试,对不起.
这样是不行的,我测试过,可能是这里的值不能超过7
我使用spring + quartz 做定时任务处理,想实现每隔二个星期的周一和周三触发任务,这样一个cron 表达式怎么写?
1 楼
抛出异常的爱
2008-03-03
写四个任务?
2 楼
ddandyy
2008-03-03
好像没办法指定隔多长时间呢.......
除非用那种隔多少秒启动的定义方式 这样就需要写两个 每隔3*7*24*3600*1000就执行
或者写一个 每个星期2和3都会运行的 然后在数据库里记录上次启动时间 如果是两个星期就启动 否则就不启动 当然数据库里要记录两个时间 分别对应周二和周三
除非用那种隔多少秒启动的定义方式 这样就需要写两个 每隔3*7*24*3600*1000就执行
或者写一个 每个星期2和3都会运行的 然后在数据库里记录上次启动时间 如果是两个星期就启动 否则就不启动 当然数据库里要记录两个时间 分别对应周二和周三
3 楼
hfbrook
2008-03-03
谢谢各位的回复,好象用cron表达式是没有办法解决这个问题,不过我想用 JobListener应该可以实现这个功能.
4 楼
jycode
2008-03-03
0 0 0 0 0 2/2,4/2
5 楼
lggege
2008-03-03
jycode 写道
0 0 0 0 0 2/2,4/2
我不清楚在第六位的Day-of-Week是否可以用数字.如果可以,那上面的就是正解.
0 0 0 0 0 MON/2,WED/2
6 楼
hfbrook
2008-03-03
lggege 写道
jycode 写道
0 0 0 0 0 2/2,4/2
我不清楚在第六位的Day-of-Week是否可以用数字.如果可以,那上面的就是正解.
0 0 0 0 0 MON/2,WED/2
在day_of_week中用 /2表示的是每隔二天而不是每隔2周,楼上所说的不行
7 楼
lggege
2008-03-03
ddandyy 写道
好像没办法指定隔多长时间呢.......
除非用那种隔多少秒启动的定义方式 这样就需要写两个 每隔3*7*24*3600*1000就执行
或者写一个 每个星期2和3都会运行的 然后在数据库里记录上次启动时间 如果是两个星期就启动 否则就不启动 当然数据库里要记录两个时间 分别对应周二和周三
除非用那种隔多少秒启动的定义方式 这样就需要写两个 每隔3*7*24*3600*1000就执行
或者写一个 每个星期2和3都会运行的 然后在数据库里记录上次启动时间 如果是两个星期就启动 否则就不启动 当然数据库里要记录两个时间 分别对应周二和周三
看来只能这样了.
每周1,3执行. 执行前判断上次执行是否有两个星期间隔了.
8 楼
agile_boy
2008-03-03
0 0 0 0 0 2#1,2#3,4#1,4#3
这样如何?未验证
这样如何?未验证
9 楼
hfbrook
2008-03-03
agile_boy 写道
0 0 0 0 0 2#1,2#3,4#1,4#3
这样如何?未验证
这样如何?未验证
#表示的是一个月份内的第几个星期,而我要求的是年度范围内的,就是一年52周,每几周的周几运行。
我现在用JobListener和 InInterruptableJob接口去实现,在listener 中判断当前时间的 week_of_year(一年内的第几个星期) 能否被 interval(星期的间隔) 整除,如果不能整除就跳过这次的job执行。
10 楼
jycode
2008-03-04
hfbrook 写道
lggege 写道
jycode 写道
0 0 0 0 0 2/2,4/2
我不清楚在第六位的Day-of-Week是否可以用数字.如果可以,那上面的就是正解.
0 0 0 0 0 MON/2,WED/2
在day_of_week中用 /2表示的是每隔二天而不是每隔2周,楼上所说的不行
若真是如此, 改成14就是2周了,何必太拘泥.
另,week这个位置是可以用数字的,1表示sun,类推.
不过我的确没有实作进行测试,对不起.
11 楼
ddandyy
2008-03-04
引用
Day-of-Week 1-7 or SUN-SAT , - * ? / L C #
可以用14??????????
12 楼
hfbrook
2008-03-04
jycode 写道
hfbrook 写道
lggege 写道
jycode 写道
0 0 0 0 0 2/2,4/2
我不清楚在第六位的Day-of-Week是否可以用数字.如果可以,那上面的就是正解.
0 0 0 0 0 MON/2,WED/2
在day_of_week中用 /2表示的是每隔二天而不是每隔2周,楼上所说的不行
若真是如此, 改成14就是2周了,何必太拘泥.
另,week这个位置是可以用数字的,1表示sun,类推.
不过我的确没有实作进行测试,对不起.
这样是不行的,我测试过,可能是这里的值不能超过7
13 楼
过无双
2008-03-05
楼主的需求 我没有想出来
可能cron不大适合这样的情况
不过我觉得 既然是固定间隔(两周)
使用Quartz的SimpleTrigger就可以了吧
何必用cron呢
可能cron不大适合这样的情况
不过我觉得 既然是固定间隔(两周)
使用Quartz的SimpleTrigger就可以了吧
何必用cron呢
14 楼
pf_miles
2008-03-05
直接crontab搞定了吧?
0 0 * * 1,3/2 cmd
0 0 * * 1,3/2 cmd
15 楼
cwx714
2008-03-10
0 0 0 * * 2,4/2
我一直是这样写的。
我一直是这样写的。
16 楼
rrooyy
2008-08-08
CRON表达式 配合 Calendar日历就可以实现你需要的功能。
即通过CRON指定每周一、三执行,然后使用一个隔周有效的日历。Quartz是有这个功能的。
即通过CRON指定每周一、三执行,然后使用一个隔周有效的日历。Quartz是有这个功能的。
17 楼
wu2004
2008-10-22
怎么没有一个完整的答案?