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

Hangfire recurring job按0 9 * * * cron配置却提前1小时触发是什么原因

问题原因

1. Hangfire 1.7.0 版本已知时区处理缺陷

你当前使用的1.7.0版本存在Cron表达式时区计算的原生bug,在处理包含夏令时规则的自定义时区时,会出现固定1小时的时间偏移,导致任务触发时间不符合预期。该问题已经在后续的1.7.x维护版本中完成修复。

2. 操作系统时区数据过时

你代码中配置的E. South America Standard Time对应巴西东部时区,该地区在2019年正式取消了夏令时制度。如果运行服务的Windows系统时区数据未更新,仍然保留旧的夏令时规则,会导致时间计算时自动减去1小时,最终出现早8点触发的问题。

解决方案
  • 优先升级Hangfire到1.7.36及以上的稳定版,无需修改现有业务代码即可修复版本自带的时区计算bug。
  • 若暂时无法升级Hangfire版本,可临时将Cron表达式调整为Cron.Daily(10),抵消1小时的偏移误差,该方案不建议长期使用,夏令时规则变更时需要同步调整。
  • 安装服务器操作系统的最新累计更新,拉取最新的时区规则,确保E. South America Standard Time的夏令时配置和当地现行规则一致。
  • 可在服务端运行以下代码验证时区配置是否正确:
var tz = TimeZoneInfo.FindSystemTimeZoneById("E. South America Standard Time");
// 巴西当前无夏令时,返回值正常应为False
Console.WriteLine(tz.SupportsDaylightSavingTime);

内容的提问来源于stack exchange,提问作者Rafael Kayser Smiderle

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:24:04