【问题标题】:datetime.utc() doesn't give the correct value when run on Azure function app在 Azure 函数应用上运行时 datetime.utc() 没有给出正确的值
【发布时间】:2023-04-03 19:02:02
【问题描述】:

我在 Azure 上使用带有 Linux 操作系统的 Function 应用,使用 Python 进行 API 调用。我正在做的是进行 API 调用并将 JSON 文件放入存储帐户中的路径中。我正在尝试使用datetime.utcnow() 获取当前日期和时间并在路径中使用它。

当我在本地运行我的函数应用程序时,一切似乎都很好,并且它给出了今天的正确日期。但是当我在 Azure 门户和 Azure 数据工厂上运行时,它没有提供正确的日期;相反,它给出的日期与在我的系统上本地运行的日期相同。

这让我很困惑,我还没有解决方案。

ISOcurrentTime = str(datetime.now(timezone.utc).isoformat())
currentDate = str(datetime.now(timezone.utc).strftime("%Y/%m/%d"))

【问题讨论】:

  • Function App 是否设置为使用明确的时区?您可以通过添加WEBSITE_TIME_ZONE App 设置来实现。请参阅:How do I set the server time zone for my web app?。
  • 我不确定我是否理解这个问题,因为 UTC 时间是相同的,无论代码在哪里运行。如果您在本地以及世界其他地方查询当前 UTC 时间,大致在同一时间,您将获得大致相同的时间戳。
  • 如果我没记错的话,Python 中的datetime.utcnow() 和datetime.now(timezone.utc) 是有区别的。我认为一个确实考虑了夏令时,而另一个则没有。无论如何:很高兴它起作用了!
  • @rickvdbosch 感谢您的回复。我只是注意到它不起作用并且我犯了一个错误。虽然我添加了 WEBSITE_TIME_ZONE 并将其设置为 UTC,但我仍然遇到同样的问题。

标签: python linux azure-functions


【解决方案1】:

你检查过服务器时区吗?

  • 打开终端并连接到 azure 实例
  • 使用 'timedatectl' 检查 azure 服务器上的时区
  • 然后'sudo timedatectl set-timezone '

参考:https://linuxize.com/post/how-to-set-or-change-timezone-in-linux/

【讨论】:

    猜你喜欢
    • 2023-03-20
    • 2020-06-12
    • 2015-11-10
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 2013-07-30
    • 1970-01-01
    相关资源
    最近更新 更多