首页 > 后端开发 > php教程 > 有谁对Discuz比较了解的,每个用户有自己的时区,后台可以设置,这实现了国际化啊

有谁对Discuz比较了解的,每个用户有自己的时区,后台可以设置,这实现了国际化啊

WBOY
发布: 2016-06-06 20:18:23
原创
1310 人浏览过

Discuz的用户首页可以看到其所在时区,后台也可以设置时区,这是国际化的路线啊

我在想它整个系统是不是用的格林威治时间,然后根据用户所在时区转换为本地时间的

比如一个论坛有中国和美国的用户同时在线发帖,系统记录发帖的时间是世界时间

我只追到系统有一个 .\source\class\discuz\discuz_application.php 类里面有一个 timezone_set()方法@date_default_timezone_set('Etc/GMT'.($timeoffset > 0 ? '-' : '+').(abs($timeoffset)));这个设置了$timeoffset其实是0啊,也就是说是设置了格林威治时间了啊……

有谁对dz源码比较熟悉的,指点我一下思路哈,谢谢了!

回复内容:

Discuz的用户首页可以看到其所在时区,后台也可以设置时区,这是国际化的路线啊

我在想它整个系统是不是用的格林威治时间,然后根据用户所在时区转换为本地时间的

比如一个论坛有中国和美国的用户同时在线发帖,系统记录发帖的时间是世界时间

我只追到系统有一个 .\source\class\discuz\discuz_application.php 类里面有一个 timezone_set()方法@date_default_timezone_set('Etc/GMT'.($timeoffset > 0 ? '-' : '+').(abs($timeoffset)));这个设置了$timeoffset其实是0啊,也就是说是设置了格林威治时间了啊……

有谁对dz源码比较熟悉的,指点我一下思路哈,谢谢了!

不管怎么设置时区,time函数得到的时间戳是固定的,不会因为时区不同而不同,只是调用date 的时候,时区就起到作用了,你可以这样理解,如果你在东八区,则date('Y-m-d') 实际上是 date('Y-m-d',time()+8*3600),所以所谓的国际化就可以这样做,存储用户所在时区,然后重新定义一个日期格式化函数,比如

<code>function localdate( $format, $time_zone ){
    return date($format,time()+$time_zone*3600)
}</code>
登录后复制

没有人知道吗

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板