背景:我有一个允许用户创建待办事项的系统。目前,cron 作业每 12 小时触发一次,并发送我们的提醒电子邮件。问题?不是每个用户都在同一个时区,所以我的早上 7 点可以是他们的凌晨 1 点。
目标:允许用户选择自己的时区。此外,允许用户选择自己喜欢的时间,以 15 分钟为增量(选择小时和 00、15、30 或 45)。
我所拥有的:我在我的网络应用程序上设置了一个变量来匹配电子邮件服务器的时区(-0600)。我允许用户提交他们自己的时区和两个首选的电子邮件时间。我正在编写一个脚本来检查当前时间是否与用户的首选发送时间匹配,并查看用户的时区是否与系统的时区匹配。
背景,第二部分:当用户提交他们的时区时,此时他们选择了他们喜欢的两个时间(所有这三个信息都被放入数据库中他们自己的单元格)。
我陷入困境的地方:我认为最好的选择是在用户提交时将首选时间($etime1 和 $etime2)转换为系统的时区($systz),因此它作为系统的时区存储在数据库中。这样,计算是在用户提交他们的偏好时完成的(不是经常),而不是每次运行 cron 作业时(经常 - 每 15 分钟)。用户的时区位于变量 $uzertz 下。
所以:用户提交数据,这就是我所拥有的”
if ($usertz == $systz) {
*submit the $etime1 and $etime2 data as-is*}
else { *run some sort of script to convert $etime1 and $etime2 to the -0600
(system's timezone) equivalent, after which is should be submitted to the db in it's
converted version* }
我了解 PHP 提供了将时间从一个时区转换为另一个时区的方法,但我一直很难理解这些脚本是如何工作的,特别是因为我发现的那些是查看系统时间,而不是用户提交的时间。
谢谢!