我需要通知流程背后的逻辑。在上一个项目中,我成功地创建了通知功能。但是问题在于它根据服务器时区发送通知。
假设:
用户希望在其实际事件(任何事件)的1小时前收到通知。
该用户在印度,并根据印度时间进行通知。 通知时间:下午3:00。
现在问题启动服务器正在美国运行,并且如果将匹配的通知发送给用户,则服务器时间与通知时间也将匹配。
但不是根据印度时区,而是根据在美国运行的服务器时区来发生。
它将采用美国当前时区和数据库中的日期时间存储。
每分钟设置一次cron作业。 实际结果。
根据用户所在时区发送的该通知,例如用户来自印度,美国,加拿大以及其他任何地方。但是通知应根据用户时区发送。
有关更多说明,请使用Google日历事件通知流程。
有人可以帮助我解决这个问题吗?
答案 0 :(得分:0)
配置您的应用程序以使用UTC。
保存日期时间值时,无论用户时区如何,始终将其保存为UTC时区。
然后在用户网站上显示时,使用用户的时区从UTC转换。
对于通知,给定用户的datetime值(根据其时区),将其转换为UTC,然后将其存储到数据库中。这样,数据库中存储的所有日期时间值始终都是UTC。
然后在您的cronjob中,只需做一个条件即可根据通知日期时间找到要发送的通知,这样您就不必担心用户的时区了。