PHP时间戳并在不同时区显示正确的日期和时间

时间:2011-07-14 22:16:52

标签: php timezone timestamp

我目前正在将我的MYSQL数据库中的日期存储为PHP时间戳(整数字段)。但是,如果我从数据库中检索它并使用PHP日期函数,它是否会根据客户端的时区显示正确的时间。

例如,我在东部时间显示一个PHP时间戳1310674625(从DB中提取) 2011年7月14日22:17:05 。因此,如果我使用下面的代码在PHP中显示时间戳,那么查看太平洋时区网页的人会看到 2011年7月14日19:17:05 吗?

echo date('M d Y H:i:s', 1310674625);

2 个答案:

答案 0 :(得分:0)

没有。日期将根据服务器的时间和时区显示,而不是用户的。

您可以在您的网站上提供一个选项,允许用户提供他/她的时区(或尝试使用基于IP的地理位置)并根据情况调整输出。

根据this post,可能无法可靠地确定用户的时区,因此为了获得最佳效果,您可能需要从用户那里获得输入。

编辑(根据评论中的更多信息请求)

如果您需要输出所选时区,可以使用以下选项之一:

echo date('e'); // Examples: UTC, GMT, Atlantic/Azores (Available in version 5.1.0 and later
echo date('O'); // Different in Greenwich meantime. Example: +0200
echo date('T'); // Timezone abbreviation. Examples: EST, MDT ...

有关详细信息,请参阅date手册页。

编辑2:

要“将日期打印到指定的时区”,您需要:

  1. 获取当前日期作为时间戳(time()
  2. 获取用户的时区偏移量
  3. 使用mktime根据需要添加或减去用户的偏移量。
  4. 使用date()将结果转换回人类可读的格式。

答案 1 :(得分:-1)

如果您了解用户时区,请使用date_default_timezone_set

您也可以使用Javascript日期(此处打印时间戳)