如何使用计时器触发器将时区传递给Azure函数

时间:2020-02-27 22:17:05

标签: c# azure-functions

我创建了一个Azure函数,需要在美国东部标准时间上午11点运行。我了解计时器触发器使用UTC,但是出于可读性的目的,是否可以将上午11点传递给run函数?

例如,这是我的run方法,是否可以通过X所在的上午11点并指定时区?

public static void Run([TimerTrigger("0 0 X * * *")]TimerInfo myTimer, TraceWriter log)

1 个答案:

答案 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上,在此位置设置时区(不要忘记保存更改):

enter image description here

enter image description here


this doc开始,EST = GMT-5。因此,在您的情况下,如果您处于默认时区,则可以将CRON设置为0 0 6 * * *。由于小时不能为负。因此它对您的情况有效,但不一定适用于其他情况。我建议您使用我一开始建议的方法。