【发布时间】:2012-03-28 01:08:21
【问题描述】:
我有一个 Web 应用程序,它允许用户选择在特定工作日的特定时间(例如:星期五晚上 7 点)执行特定操作——每个工作日重复一次。我的用户位于不同的时区。因此,我想以一种时区格式存储日/小时,以便每小时运行的 cron 作业可以查询我的数据库并快速获取代表该小时要执行的任务的所有行。完成此任务的最佳方法是什么?
基本上我需要知道如何服用 周五晚上 7:00 在马萨诸塞州波士顿或周六下午 3:00 旧金山,加利福尼亚州并将两者转换为 GMT(并存储在我的数据库中)。这样,当我每小时运行一次 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
【问题讨论】:
-
如果用户在他们的时区选择时间,你可能need to find out their timezone?更简单的方法是让他们从 GMT 中选择,然后在 JS 中添加他们当地时间的提示。
-
@aufziehvogel,我实际上已经有了他们的时区。我尝试了一个想法并将其添加为编辑。
-
棘手。可能是用户选择时区的下拉/选择,然后使用 php 中的日期函数来重新处理 utc 偏移量,但您还必须允许夏令时。例如我在 GMT/UTC 0,但在月底我将比 UTC 1 早一个小时,因为我们切换到英国夏令时
-
@PurplePilot,你是对的。夏令时更改后,我的解决方案将不同步。