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

如何使用Hangfire设置从指定日期开始每两周周日执行的cron定时任务?

Hangfire 每两周周日执行配置方案

Hangfire 内部使用 Cronos 库解析 Cron 表达式,标准 Cron 没有原生的“每两周”语义,可根据你的实际需求选择以下两种实现:


方案1:固定隔周周日执行(无需严格对齐今日起算的14天间隔)

如果仅要求每隔一周的周日运行,无需严格按今日作为起始点计算14天间隔,直接使用 Cron 表达式即可:

  • 示例(周日凌晨1点执行,每隔一周触发):0 0 1 * * 0/2
    • 字段说明:第1位为秒(固定0)、第2位为分(固定0)、第3位为时(可修改为你需要的执行小时数)、第4位为日(任意)、第5位为月(任意)、第6位为星期(0代表周日,步长2代表每两个周的周日触发)
    • 调整提示:如果当前触发周次不符合你的预期,可将星期字段调整为1/2,即可切换触发的周次

方案2:严格从今日起算每14天的周日执行

标准 Cron 无法感知任务的起始日期,因此需要结合 Hangfire 任务注册逻辑实现对齐起始时间的要求:

  1. 先计算距离今日最近的未来周日作为首次执行时间
  2. 注册任务时指定固定14天的间隔,代码示例如下:
// 计算下一个周日的凌晨1点作为首次执行时间,可自行修改执行时刻
var nextSunday = DateTime.Now.Date.AddDays((7 - (int)DateTime.Now.DayOfWeek + 7) % 7).AddHours(1);
// 注册重复任务,每14天执行一次
RecurringJob.AddOrUpdate(
    "自定义任务唯一ID", 
    () => 你的业务执行方法(), 
    "0 0 1 */14 * *",
    TimeZoneInfo.Local,
    nextSunday
);

验证方法

配置完成后可直接在 Hangfire 内置仪表盘的「重复任务」栏,查看对应任务的下一次触发时间,确认是否符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 01:06:08