本地运行Azure Function时Cron定时器未采用UTC时区问题
Azure Function定时器CRON本地触发时间不符合预期解决方案
这个问题的核心是Azure Functions Core Tools本地运行时和云端运行环境的CRON表达式默认解析时区不一致:
- 云端Azure Function未配置
WEBSITE_TIME_ZONE参数时,默认使用UTC时区解析CRON表达式 - 本地执行
func start命令运行函数时,Core Tools默认采用操作系统本地时区解析CRON表达式,这和你按UTC规则写的0,30 * 0-8,21-23 * * *规则不匹配,才会出现当前UTC时间落在触发窗口内却不会触发的问题。
对应的修复方法如下:
- 方案一(推荐,保证本地和云端行为一致):在项目根目录的
local.settings.json文件的Values配置节点中添加"WEBSITE_TIME_ZONE": "UTC",重启func start命令后,CRON会按UTC规则解析,触发时间就会符合预期。 - 方案二:如果需要本地和云端都统一使用指定时区,将上面配置项的值替换为对应时区的标准ID即可,同时记得在云端函数的应用配置中也添加同样的
WEBSITE_TIME_ZONE参数保证两端行为一致。
修改配置后重启本地运行环境,查看日志输出的下一次触发时间校验是否符合预期即可。
内容的提问来源于stack exchange,提问作者gatapia
相关产品推荐
相关产品推荐

