【问题标题】:How to set reminder according to user timezone and send notification according to it?如何根据用户时区设置提醒并根据时区发送通知?
【发布时间】:2019-10-23 12:45:57
【问题描述】:

我需要通知流程背后的逻辑。在我之前的项目中,我成功地做了一个通知功能。但问题是它根据服务器时区发送通知。

假设:

  1. 用户希望在其实际事件(任何事件)发生 1 小时前收到通知。

  2. 该用户在印度并根据印度时间发出通知。 通知时间下午 3:00。

  3. 现在问题启动服务器正在美国运行,如果匹配的通知将发送给用户,则服务器时间与通知时间匹配。

但不是根据印度时区,这是根据在美国运行的服务器时区发生的。

  1. 它将采用美国的当前时区和数据库中存储的日期时间。

  2. 每分钟设置一个 cron 作业。 实际结果。

此通知根据用户时区发送,例如用户来自印度、美国、加拿大和任何地方。但应根据用户时区发送通知。

如需更多说明,请使用谷歌日历事件通知流程。

谁能帮我解决这个问题?

【问题讨论】:

  • 忽略时区并始终使用 UTC 代替(向用户显示时除外),这会容易得多
  • 我同意。使用 UTC。

标签: javascript php mysql cron


【解决方案1】:

将您的应用程序配置为使用 UTC。

保存日期时间值时,请始终将其保存为 UTC 时区,而不管用户的时区如何。

然后在您的网站上显示时使用用户的时区从 UTC 转换。

对于通知,根据用户的时区给定一个日期时间值,将其转换为 UTC,然后将其存储到数据库中。这样,存储在数据库中的所有日期时间值始终为 UTC。

然后在您的 cronjob 中,只需根据通知日期时间查找要发送的通知的条件,这样您此时就不必担心用户的时区。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    • 2013-05-29
    • 2017-04-06
    • 1970-01-01
    相关资源
    最近更新 更多