【问题标题】:Firebase cloud functions dynamic time zonesFirebase 云功能动态时区
【发布时间】:2021-03-10 23:09:26
【问题描述】:

所以在我的 android 应用程序中,我使用实时数据库来存储有关我的用户的信息。该信息应在每周一的 00:00 点更新。我正在使用云功能来执行此操作,但这里的问题是时区。现在我已将时区设置为“欧洲/索非亚”以进行测试。文档中说云功能的时区必须来自TZ数据库。所以我想我可以在我的应用程序中注册他们的首选时区之前询问用户并将其保存在数据库中。我的问题是在获得用户的首选时区后,有没有办法只编写一个云函数并为 TZ 数据库中的每个时区动态执行它,还是我必须为 TZ 数据库中的每个时区创建单独的函数?

【问题讨论】:

    标签: firebase firebase-realtime-database google-cloud-functions timezone


    【解决方案1】:

    如果我正确理解您的问题,您可以有一个 scheduled Cloud Function,它在星期一的 00:00 到 23:00 UTC+14:00 每小时运行一次,并且对于每次执行(即在此范围内的每个小时),查询应该更新的用户并执行更新。

    根据您提供的信息,我无法输入更多详细信息。

    【讨论】:

    • 这是个好主意!但是那么夏令时呢。这是文档所说的:“请注意,某些时区包括夏令时的规定。夏令时的规则由所选的 tz 决定。”如果我使用 UTC 并每小时运行一个函数,我将如何解决这个问题?
    • 我了解到您将“在我的应用程序中注册他们的首选时区之前询问用户并将其保存在数据库中”。您应该使用此信息来确定在特定的 UTC 时间运行云函数是否是用户的星期一 00:00 点。对于 Cloud Function 的每次执行(每小时),您的数据库中可能会有一些用户,其时间是星期一 00:00 点:您可以根据他们保存为首选时区的内容来找到他们.
    • 查看更新:再想一想,我觉得你应该选择UTC+14:00时区来设置预定的云函数,因为它是地球上最早的时区。跨度>
    • 是的,我考虑过这一点,只是想对你说。感谢您的建议。我会多考虑一下这个问题,看看我能做些什么。
    【解决方案2】:

    无法使用动态时区安排云函数。您必须在编写函数时知道时区并在代码中静态声明它。

    如果您想动态安排某些事情,请阅读其他问题中的选项:https://stackoverflow.com/a/42796988/807126

    因此,您可以安排一个每小时运行的重复函数,并检查是否应该在调用它的那一刻为用户运行某些内容。或者,您可以使用 Cloud Run 等服务安排一个函数的单个未来调用,并在需要时继续重新安排它。

    【讨论】:

      猜你喜欢
      • 2018-05-17
      • 2019-11-18
      • 2020-06-09
      • 2017-08-26
      • 2017-12-11
      • 2018-11-29
      • 2018-05-09
      • 2019-10-09
      相关资源
      最近更新 更多