当用户处于不同的时区时,如何处理日期时间的显示?

时间:2011-03-11 17:40:41

标签: php mysql datetime timezone

我正在创建一个社交网络类型的网站。该网站在交通方面做得很好。我遇到了一个问题,那里有人民状态和互动的直播新闻。当我从这里发布一些东西(亚特兰大GA)时,是在1分钟前发布的状态。对于澳大利亚人来说,它说是在16小时前发布的。

我正在使用一个LAMP设置,使用php 5.至于JQuery插件我使用timeago使abbr看起来很漂亮。

我不确定是否需要根据用户的位置设置PHP时区,或者根据用户位置设置数据库时区。

2 个答案:

答案 0 :(得分:5)

我希望将所有日期保存在UTC之类的内容中,然后根据它进行比较。如果您需要显示日期,只需将其从UTC转换为特定用户所在的任何时区(在您的服务器上或通过JS)。

答案 1 :(得分:0)

timeago插件需要输入UTC时间或浏览器本地时间。您可能会给timeago一个标记为UTC的本地时间。这是一个假设当地时间为上午9:25的例子:

<script language="javascript">
jQuery(document).ready(function() {jQuery("abbr.timeago").timeago();});
</script>

Correct UTC: <abbr class="timeago" title="2011-03-25T13:25:00Z">March 25, 2011</abbr>
Correct Local: <abbr class="timeago" title="2011-03-25T09:25:00">March 25, 2011</abbr>
Wrong (local time marked as UTC)<abbr class="timeago" title="2011-03-25T09:25:00Z">March 25, 2011</abbr>

不要担心更改数据库时区或PHP。用Javascript做吧。确定PHP发送到浏览器的时间字符串是否已转换为UTC。如果是,请在调用timeago之前将'Z'后缀添加到时间字符串。如果不是UTC,请删除“Z”后缀。希望有所帮助。