(悬赏)关于Cron表达式每间隔50分钟执行不正确的问题

代码打字员 2014-09-12 02:12:00
Cron表达式每间隔50分钟 写法是:0 0/50 * * * ?
然而执行结果如下:

第0次触发时间:2014-09-12 14:50:00
第1次触发时间:2014-09-12 15:00:00
第2次触发时间:2014-09-12 15:50:00
第3次触发时间:2014-09-12 16:00:00
第4次触发时间:2014-09-12 16:50:00
第5次触发时间:2014-09-12 17:00:00
第6次触发时间:2014-09-12 17:50:00
第7次触发时间:2014-09-12 18:00:00
第8次触发时间:2014-09-12 18:50:00
第9次触发时间:2014-09-12 19:00:00

第0次和第1次居然相差10分钟,而第1次和第2次是相差50分钟;但第2次和第三次又是相差10分钟。我要求的是每次都是间隔50分钟整,请问这个该怎么写?
...全文
1328 1 收藏 22
写回复
22 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
qq_19879263 2018-05-17
楼主WithCronSchedule("0 50 * * * ?") 这个就是当前时间是x:50:00 执行的!如果你不需要具体到时间,只是想每隔50执行一次的话就看下下面这个吧!那个是具体时间点的! TriggerBuilder.Create() .WithSimpleSchedule(t => t.WithIntervalInMinutes(50) //触发执行, .RepeatForever()) //重复执行 .Build();
回复
cnn112002 2015-09-09
0 */50 * * * ? 试试
回复
by_封爱 版主 2014-09-12
我又重新看了下资料,发现下面的表达式
引用
"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发 "0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发
所以 我认为每隔50分钟应该是可以实现的..毕竟这外国的东西 这点人家不会考虑不到的..
回复
代码打字员 2014-09-12
谢谢大家。。。。
回复
於黾 2014-09-12
不一定非要被60整除 只要能被24*60整除的都可以 不过必须写成每天0点开始执行,这样刚好都是间隔同样的时间 否则每天最后一次执行,和第二天的0点执行,之间的间隔就会不一样
回复
代码打字员 2014-09-12
引用 8 楼 Z65443344 的回复:
还有,50分钟这个奇葩的数字是你自己拍脑袋想的吗? 为什么不设置1小时或30分执行一次,那样做逻辑会简单的多
是无意中发现这个job没有按照预期的 每次间隔没有按照设置的50分钟执行的。
回复
代码打字员 2014-09-12
引用 12 楼 Z65443344 的回复:
[quote=引用 11 楼 diaodiaop 的回复:] 0 0/30 * * * * 或者 0 0/30 * * * ? 我要去测试下..
每整点执行和30分钟执行, 0 0/30 * * * *可以的 但是从运行开始执行,这个启动时可能不是整点和整30分,表达式怎么填?能填变量?[/quote] 每隔50分钟这样,看样子不能使用cron表达式了,只要是不能被60整除的都会出现这样问题。只能使用simple 了! Cron在此时顿时完败于给了简单的Timer控件。
回复
by_封爱 版主 2014-09-12
0/30 * * * * ? 09-12 14:38:00:任务被执行 09-12 14:38:30:任务被执行 09-12 14:39:00:任务被执行 09-12 14:39:30:任务被执行 09-12 14:40:00:任务被执行 09-12 14:40:30:任务被执行 09-12 14:41:00:任务被执行 09-12 14:41:30:任务被执行 09-12 14:42:00:任务被执行 09-12 14:42:30:任务被执行 09-12 14:43:00:任务被执行
引用 12 楼 Z65443344 的回复:
每整点执行和30分钟执行, 0 0/30 * * * *可以的 但是从运行开始执行,这个启动时可能不是整点和整30分,表达式怎么填?能填变量?
是下一个的意思..比如下一个0秒开始作为起始..
回复
於黾 2014-09-12
何况50分根本不能被24*60整除
回复
於黾 2014-09-12
引用 11 楼 diaodiaop 的回复:
0 0/30 * * * * 或者 0 0/30 * * * ? 我要去测试下..
每整点执行和30分钟执行, 0 0/30 * * * *可以的 但是从运行开始执行,这个启动时可能不是整点和整30分,表达式怎么填?能填变量?
回复
by_封爱 版主 2014-09-12
0 0/30 * * * * 或者 0 0/30 * * * ? 我要去测试下..
回复
by_封爱 版主 2014-09-12
回复
by_封爱 版主 2014-09-12
引用 6 楼 Z65443344 的回复:
你如果想设置固定时间执行,那么就只能指定好从0点开始,到23点50分结束执行 第二天0点重新开始计数 如果你想从运行开始,每隔50分钟执行,就不能用Cron表达式了
可以使用的.
回复
於黾 2014-09-12
还有,50分钟这个奇葩的数字是你自己拍脑袋想的吗? 为什么不设置1小时或30分执行一次,那样做逻辑会简单的多
回复
by_封爱 版主 2014-09-12

public IScheduler scheduler;
public string cron="0/1 * * * * ?";
                scheduler = new StdSchedulerFactory().GetScheduler();
                scheduler.Start();
                var job = new JobDetailImpl("MyJob", typeof(MyJob));
                var trigger = TriggerBuilder.Create().WithCronSchedule(cron).Build();
                scheduler.ScheduleJob(job, trigger);
实际上 你应该从我给你发送的网站自己拿秒测试..然后看IJob的输出.这样方便又快. 如果秒级成功了 直接把秒的表达式仍在分钟的位置就应该可以了.. 你成功了告诉我啊...
回复
於黾 2014-09-12
你如果想设置固定时间执行,那么就只能指定好从0点开始,到23点50分结束执行 第二天0点重新开始计数 如果你想从运行开始,每隔50分钟执行,就不能用Cron表达式了
回复
於黾 2014-09-12
写法错误 后面不能是 * * * 你需要先指定从几点开始执行,执行到几点 你指定为* 则从每个小时的10分都开始执行,然后隔50分钟再执行
回复
by_封爱 版主 2014-09-12
0 0/50 * * * ? 你这表示 从0分钟开始 数50分钟 做为一个周期.. 所以才会出现你的问题... http://www.hahuachou.com/cron/index.htm 参考上面的东西 应该可以弄出来..正好我也在弄 我的需求是每隔30分钟..虽然我也没做出来..不过我知道你这肯定是错的. 因为我也是这么测试的...
回复
代码打字员 2014-09-12
引用 1 楼 Forty2 的回复:
我不认为这种计划可以用Cron来完成。
也就是SimpleTrigger 这种配置?
回复
代码打字员 2014-09-12
引用 1 楼 Forty2 的回复:
我不认为这种计划可以用Cron来完成。
只能使用simple 这种?
回复
加载更多回复
相关推荐
发帖
C#
创建于2007-09-28

10.6w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2014-09-12 02:12
社区公告

让您成为最强悍的C#开发者