首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用户的最佳GMT时间配置| PHP

用户的最佳GMT时间配置| PHP
EN

Stack Overflow用户
提问于 2010-08-27 08:42:35
回答 2查看 272关注 0票数 1

我想知道当用户设置自己的格林威治时间时,如何进行最佳的用户配置,例如,如果用户在GMT+3时区,并且用户通过UCP设置它。

我所做的是,下拉菜单中的每个选项:

代码语言:javascript
复制
<select name="timezone">
    ...
    <option value="-7200">GMT-2</option>
    <option value="-3600">GMT-1</option>
    <option value="0">GMT</option>
    <option value="3600">GMT+1</option>
    <option value="7200">GMT+2</option>
    ...
</select>

这样,当用户选择它时,它会将该值添加到数据库中的用户字段中。

当用户创建帖子时,它使用time()戳,而我使用gmdate()函数,如下所示:

代码语言:javascript
复制
while(loop goes here)
{
    $post_time = $row['post_time'] // e.g. 1282165261

    if($row['user_timezone'] > 0)
    {
        $timezone = $post_time-$row['user_timezone'];
    }
    else
    {
        $timezone = $post_time+$row['user_timezone'];
    }
}

它以此时间戳格式输出:

代码语言:javascript
复制
gmdate("D jS M Y @ g:iA", $timezone);

但问题是,如果我使用低于GMT的值,例如GMT-1、GMT-6,它将更改为+

问题是,将时间戳配置为用户首选的GMT时间的最佳方式是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-27 08:52:33

这是毫无意义的。

您不应该让用户选择GMT偏移量,否则:

如果他在美国东部夏令时,他必须在每一个美国东部夏令时进行更改,他会看到在美国东部夏令时以外的时间,他的时区的时间是错误的,反之亦然。

你应该做的是让他从列表中选择一个实际的时区(例如Europe/Lisbon)。

票数 3
EN

Stack Overflow用户

发布于 2010-08-27 08:51:01

问题出在这里:

代码语言:javascript
复制
if($row['user_timezone'] > 0)
{
    $timezone = $post_time-$row['user_timezone'];
}
else
{
    $timezone = $post_time+$row['user_timezone'];
}

如果你仔细观察它,你会发现它等同于:

代码语言:javascript
复制
$timezone = $post_time - abs($row['user_timezone']);

您只需将其替换为:

代码语言:javascript
复制
$timezone = $post_time - $row['user_timezone'];
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3580584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档