2

我对设置时区感到非常困惑。我正在用 PHP 开发一个论坛,因为我不确定是否显示回复时间。

下面是条件,

2013 年 4 月 1 日上午 10 点(时区“亚洲/加尔各答”)发布了一个问题。有人在 2013 年 3 月 31 日晚上 11:30 快速回复,因为回复人的时区是“美国/芝加哥”,即 -10.30 小时。

我的问题是如何管理不同位置的时区?

在上面的示例中,应该向发布问题并获得回复的用户显示什么时间?

向回答问题的用户显示的时间应该是多少?

我使用 PHP 的时间函数作为字符串在数据库中插入时间记录。并显示我使用的时间

date("d m Y h:m a", strtotime($time));

上面的代码 $time 是来自数据库的值。

谢谢..

4

2 回答 2

3

我会将日期和时间存储到数据库中gmdate(),以使它们基于 GMT:

$d = gmdate('Y-m-d H:i:s');
// store $d into database

呈现页面时,您会考虑用户的时区偏好:

date_default_timezone_set('Asia/Singapore');
$ts = strtotime($date_from_db . ' GMT');
$date_on_page = date('Y-m-d H:i:s', $ts);

或者您可以让 JavaScript 处理时间转换。

更新

您还可以将 UNIX 时间戳存储在数据库中;我个人喜欢有 DATETIME 列,因为当您尝试调试某些东西时,它们更容易解码:)

于 2013-04-01T09:22:22.387 回答
0
date_default_timezone_set('America/New_York'); 

此函数用于在 php 中使用默认时区。

这是教程的链接。

并更改时区使用:

$date = new DateTime('2000-01-01', new DateTimeZone('Pacific/Nauru'));
echo $date->format('Y-m-d H:i:sP') . "\n";

$date->setTimezone(new DateTimeZone('Pacific/Chatham'));
echo $date->format('Y-m-d H:i:sP') . "\n";

这是时区列表。

于 2013-04-01T09:18:32.107 回答