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

标签 c# azure-functions

我创建了一个需要在美国东部标准时间上午 11 点运行的 azure 函数。我知道计时器触发器使用 UTC 但是有没有办法将上午 11 点传递给运行函数以提高可读性?

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

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

最佳答案

基于 Web 应用沙箱的 Azure Function。 Web 应用程序需要您首先在 env 设置中设置时区。 timetrigger 属性是函数的声明部分。这里将检查环境变量。如果没有提前设置时区的环境变量,会按照默认的UTC时间处理。

在本地运行和在 azure 上运行时,env 变量来自不同的地方。

例如,如果要设置 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 * * * .由于小时不能为负。所以它对你的情况有效,但不一定适用于其他情况。我建议你使用我一开始推荐的方法。

关于c# - 如何使用计时器触发器将时区传递给 Azure 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60442559/

相关文章:

azure - 在哪里存储 local.settings.json 中的设置以进行 proddeployment?

c# - 调用存储过程并检查返回值

c# - 使 Azure Function 在 ServiceBusTrigger 上顺序运行 - maxConcurrentCalls 不起作用

c# - 使用 C# 中的 v4 函数应用从 Azure 表存储获取包含所有数据集的完整表

c# - 匿名类型 VS 局部变量,什么时候应该使用?

azure - 在 Azure 函数中执行导入模块时已加载同名程序集的错误

azure - 仅将 Azure Function 中间件用于选定的函数

c# - Xamarin.Forms 中的仅小写输入

C#类声明中泛型参数的重复

c# - 让 C# ListView 仅在需要时显示缩略图