You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quartz.Net CronExpression触发时间不符合预期,求正确配置表达式

Quartz.Net 定时任务Cron表达式问题解决

问题原因

你使用的0 */9 * ? * * *表达式中,分钟位的*/9逻辑是匹配每个小时内分钟数为9的倍数的时间点(即0分、9分、18分……54分),而非从上一次触发时间累加9分钟,所以跨小时后会跳转到下一小时的0分触发,不符合你的预期。

解决方案

方案1:使用SimpleTrigger(推荐)

固定间隔调度更适合用SimpleTrigger实现,它会严格从上一次触发时间累加间隔时长:

var trigger = TriggerBuilder.Create()
    .WithIdentity("intervalTrigger", "taskGroup")
    .StartAt(new DateTimeOffset(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 21, 45, 0)) // 设置首次触发时间
    .WithSimpleSchedule(schedule => schedule
        .WithIntervalInMinutes(9)
        .RepeatForever())
    .Build();

方案2:自定义Cron表达式(仅适配固定首次触发时间)

如果必须使用Cron表达式,需根据首次触发的分钟值,枚举所有符合9分钟间隔的分钟点。比如首次触发是21:45,对应的Cron表达式为:

0 45,54,3,12,21,30,39,48 * ? * * *

这种方式的局限性是:如果首次触发时间改变,需要重新调整分钟位的枚举值。

内容的提问来源于stack exchange,提问作者kefa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 04:55:24