问题描述
使用Hangfire的过程中,有一个定时任务设置每天6点执行一次(0 6 * * *)但是实际上是每天14点执行,跟设定时间相差8小时。
原因
HangFire默认使用UTC时区,跟国内正好相差8小时
![图片[1]-Hangfire时区问题-涣清博客](https://8cltw.oss-cn-hongkong.aliyuncs.com/wp-content/uploads/2025/12/8b7642b546caef74d5abd25d8f32b022-1024x505.png)
解决措施
1.使用本地时区
RecurringJob.AddOrUpdate(() =>GetInterfaceCradData(), "0 50 01 * * ?", TimeZoneInfo.Local);
2.强制使用中国时区
var china = TimeZoneInfo.FindSystemTimeZoneById("China Standard Time");
RecurringJob.AddOrUpdate(() => GetService<IAWMethodService>().SyncInventory(), Cron.Daily(6),new RecurringJobOptions { TimeZone = china });
效果
成功修改了UTC时区为China
![图片[2]-Hangfire时区问题-涣清博客](https://8cltw.oss-cn-hongkong.aliyuncs.com/wp-content/uploads/2025/12/image-1024x505.png)
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END









暂无评论内容