我创建了一个Azure函数,需要在美国东部标准时间上午11点运行。我了解计时器触发器使用UTC,但是出于可读性的目的,是否可以将上午11点传递给run函数?
例如,这是我的run方法,是否可以通过X所在的上午11点并指定时区?
public static void Run([TimerTrigger("0 0 X * * *")]TimerInfo myTimer, TraceWriter log)
答案 0 :(得分:4)
基于Web应用程序沙箱的Azure功能。 Web应用程序需要您首先在环境设置中设置时区。 timetrigger属性是函数的声明部分。将在此处检查环境变量。如果未预先设置关于时区的环境变量,则会根据默认的UTC时间对其进行处理。
env变量在本地运行和在Azure上运行时来自不同的地方。
例如,如果要设置EST时间。
在本地,您需要在local.settings.json中进行设置。像这样:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"WEBSITE_TIME_ZONE": "US Eastern Standard Time"
}
}
在Azure上,在此位置设置时区(不要忘记保存更改):
从this doc开始,EST = GMT-5。因此,在您的情况下,如果您处于默认时区,则可以将CRON设置为0 0 6 * * *
。由于小时不能为负。因此它对您的情况有效,但不一定适用于其他情况。我建议您使用我一开始建议的方法。