代码之家  ›  专栏  ›  技术社区  ›  Al Belmondo

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

  •  0
  • Al Belmondo  · 技术社区  · 4 年前

    我创建了一个azure函数,需要在美国东部时间上午11点运行。我知道定时器触发器使用UTC,但是为了可读性的目的,有没有办法在上午11点传递给run函数?

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

    public static void Run([TimerTrigger("0 0 X * * *")]TimerInfo myTimer, TraceWriter log)
    
    0 回复  |  直到 4 年前
        1
  •  11
  •   Cindy Pau    4 年前

    基于Web应用沙盒的Azure功能。Web应用程序需要您先在环境设置中设置时区。timetrigger属性是函数的声明部分。将在此处检查环境变量。如果您没有提前设置时区的环境变量,则将根据默认的UTC时间进行处理。

    在local和azure上运行时,env变量来自不同的位置。

    例如,如果您想设置EST时间。

    在local上,您需要在local.se.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 * * * 。因为小时不能为负数。因此,它适用于您的情况,但不一定适用于其他情况。我建议你使用我一开始推荐的方法。