PHP将工作日和时间(小时)转换为GMT表示


PHP convert weekdays and time (hour) to GMT representation

我有一个web应用程序,允许用户选择在特定工作日的特定时间执行特定操作(例如:周五晚上7点)——每个工作日重复。我的用户位于不同的时区。因此,我想将天/小时存储在一个时区格式中,这样我每小时运行一次的cron作业就可以查询我的数据库,并快速获取代表该小时要执行的任务的所有行。实现这一目标的最佳方法是什么?

基本上我需要知道如何服用星期五晚上7:00在波士顿,MA或星期六下午3:00旧金山,CA,并将两者转换为GMT(并存储在我的DB中)。这样,当我每小时运行一次cron作业时,我就知道在给定当前GMT日期/小时的情况下查询数据库的确切值

编辑1通过四处玩耍,我想出了一些东西:

date_default_timezone_set('America/New_York');
$time = strtotime('Friday 8:00pm');
echo date('w : G', $time);
echo '<br>';
date_default_timezone_set('GMT');
$date = date('w : G', $time);
echo $time;
echo '<br>';
echo $date;

输出为:

5 : 20
1331942400
6 : 0

这基本上是正确的轨道吗?

编辑2有用的细节,我真的很幸运,我的用户的时区信息存储为其中一个:http://www.php.net/manual/en/timezones.php

如果您已经存储了用户时区,则可以将GMT偏移量添加到时间中以获得GMT日期。

我位于科罗拉多州,目前是格林尼治标准时间-7:

$offset = -7;
$gmt = ($offset * 60 * 60) + time();

将给出GMT时区的unix时间戳。

然后确保您的服务器将GMT作为默认时区或设置时区,您可以使用设置时区

date_default_timezone_set('GMT');