【问题标题】:PHP convert weekdays and time (hour) to GMT representationPHP 将工作日和时间(小时)转换为 GMT 表示
【发布时间】: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,你是对的。夏令时更改后,我的解决方案将不同步。

标签: php datetime time gmt


【解决方案1】:

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

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

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

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

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

date_default_timezone_set('GMT');

【讨论】:

  • 问题是,某些地区会在一年中为夏令时更改其 GMT 偏移量。
  • date('I') 会给你一个 1 或 0 取决于当前的夏令时观察。
猜你喜欢
  • 1970-01-01
  • 2013-06-01
  • 2016-11-12
  • 2018-04-13
  • 2015-08-09
  • 2012-07-04
  • 2011-10-09
  • 2014-02-23
  • 2011-06-27
相关资源
最近更新 更多