如果使用PHP更改用户的时区,如何处理存储在数据库中的用户数据

时间:2018-04-27 11:07:59

标签: php mysql cron timezone

如果用户恰好在8 AM设置了提醒通知时间,即使他移动到其他8 AM,他也应该在timezone准确地收到通知。

我的意思是,如果他移居到任何其他具有不同时区的国家,那么他应该在那个国家的早晨8 AM准确地收到通知。

要发送通知,请使用CRON中运行的UTC timezon

考虑此示例,用户的提醒时间是IST (+5:30)中的上午8点,我将2:30以UTC格式存储到数据库中。但是如果他搬到EDT (-4:00)时区那该怎么办?但是我也有大量的用户数据。

请考虑我必须使用PHP执行该操作并且数据库为MySQL,建议解决方案。

1 个答案:

答案 0 :(得分:0)

我会通过CRON在服务器上执行所有通知操作。让我们想象一个简单的例子:

1)您居住的是国家/地区,其时区为GMT+3。现在是14:00 GMT+3。您在国家/地区B 中的会议位于GMT+1

之下

2)您在这个国家的会议是16:00 GMT+1 or 18:00 GMT+3。再过4个小时,直到会议开始。

3)您在申请中预约了18:00 GMT+3的会议。服务器中的所有约会都保存为GMT+0,因此此约会保存为15:00 GMT+0

4)让我们想象你传送到会议的国家,时间现在是12:00 GMT+1。经过4个小时(16:00 GMT+1, 18:00 GMT+3, 15:00 GMT+0)后,无论您的时区发生什么变化,服务器都会通知您。由于服务器将您的约会保存为GMT + 0,并且每次都会检查CRON个工作,比如5分钟,如果有人预约到期。

另一方面,如果您想在客户端上执行检查,则应始终将客户端的日期时间转换为服务器上保存的任何格式,并与服务器核对。